/****************************************************************
   This file was created automatically by `FlexCat 2.4'
   from "locale/Amster.cd".

   Do NOT edit by hand!
****************************************************************/

/****************************************************************
    This file uses the auto initialization possibilities of
    Dice, gcc and SAS/C, respectively.

    Dice does this by using the keywords __autoinit and
    __autoexit, SAS uses names beginning with _STI or
    _STD, respectively. gcc uses the asm() instruction,
    to emulate C++ constructors and destructors.

    Using this file you don't have *all* possibilities of
    the locale.library. (No Locale or Language arguments are
    supported when opening the catalog. However, these are
    *very* rarely used, so this should be sufficient for most
    applications.
****************************************************************/


/*
    Include files and compiler specific stuff
*/
#include <exec/memory.h>
#include <libraries/locale.h>
#include <libraries/iffparse.h>

#include <proto/exec.h>
#include <proto/dos.h>
#include <proto/locale.h>
#include <proto/utility.h>
#include <proto/iffparse.h>

#include <stdlib.h>
#include <string.h>



#include "Amster_cat.h"


/*
    Variables
*/
struct FC_String Amster_Strings[326] = {
    { (STRPTR) "Napster client", 0 },
    { (STRPTR) "About Amster", 1 },
    { (STRPTR) "<to be removed>", 2 },
    { (STRPTR) "<to be replaced>", 3 },
    { (STRPTR) "<to be removed>", 4 },
    { (STRPTR) "<to be replaced>", 5 },
    { (STRPTR) "<to be replaced>", 6 },
    { (STRPTR) "<to be replaced>", 7 },
    { (STRPTR) "<to be removed>", 8 },
    { (STRPTR) "_OK", 9 },
    { (STRPTR) "Warning!", 10 },
    { (STRPTR) "Amster is still downloading some MP3's.\n"\
	"Do you want to stop transfers?", 11 },
    { (STRPTR) "_Yes|*_No", 12 },
    { (STRPTR) "Select ARexx script to run...", 13 },
    { (STRPTR) "Amster", 14 },
    { (STRPTR) "?\000About...", 15 },
    { (STRPTR) "About MUI...", 16 },
    { (STRPTR) "Help...", 17 },
    { (STRPTR) "H\000Hide", 18 },
    { (STRPTR) "Q\000Quit", 19 },
    { (STRPTR) "Library", 20 },
    { (STRPTR) "O\000Open...", 21 },
    { (STRPTR) "S\000Save", 22 },
    { (STRPTR) "A\000Save as...", 23 },
    { (STRPTR) "Settings", 24 },
    { (STRPTR) "Icon Panel", 25 },
    { (STRPTR) "MUI...", 26 },
    { (STRPTR) "Configuration...", 27 },
    { (STRPTR) "Save settings", 28 },
    { (STRPTR) "Windows", 29 },
    { (STRPTR) "Debug", 30 },
    { (STRPTR) "Library", 31 },
    { (STRPTR) "Download", 32 },
    { (STRPTR) "Messages", 33 },
    { (STRPTR) "New chat window", 34 },
    { (STRPTR) "ARexx", 35 },
    { (STRPTR) "Execute script...", 36 },
    { (STRPTR) "_Connect", 37 },
    { (STRPTR) "_Disconnect", 38 },
    { (STRPTR) "_Reconnect", 39 },
    { (STRPTR) "Not connected to a server.", 40 },
    { (STRPTR) "Connecting...", 41 },
    { (STRPTR) "Connecting to %s...", 42 },
    { (STRPTR) "Connection to %s failed.", 43 },
    { (STRPTR) "Finding optimal server...", 44 },
    { (STRPTR) "Failed to find optimal server.", 45 },
    { (STRPTR) "%d songs in %d libraries (%d GB)", 46 },
    { (STRPTR) "Song", 47 },
    { (STRPTR) "Max.", 48 },
    { (STRPTR) "_Search", 49 },
    { (STRPTR) "\033c\033b-- Advanced Search Options --", 50 },
    { (STRPTR) "Use", 51 },
    { (STRPTR) "Reset", 52 },
    { (STRPTR) "Line speed must be", 53 },
    { (STRPTR) "Bitrate must be", 54 },
    { (STRPTR) "Frequency must be", 55 },
    { (STRPTR) "Unknown", 56 },
    { (STRPTR) "14.4 Modem", 57 },
    { (STRPTR) "28.8 Modem", 58 },
    { (STRPTR) "33.6 Modem", 59 },
    { (STRPTR) "56K Modem", 60 },
    { (STRPTR) "ISDN 64K", 61 },
    { (STRPTR) "ISDN 128K", 62 },
    { (STRPTR) "Cable", 63 },
    { (STRPTR) "DSL", 64 },
    { (STRPTR) "T1", 65 },
    { (STRPTR) "T3+", 66 },
    { (STRPTR) "User", 67 },
    { (STRPTR) "List all MP3 files shared by a single user", 68 },
    { (STRPTR) "Browse", 69 },
    { (STRPTR) "Result:", 70 },
    { (STRPTR) "Not important", 71 },
    { (STRPTR) "At least", 72 },
    { (STRPTR) "Equal to", 73 },
    { (STRPTR) "At best", 74 },
    { (STRPTR) "Cl_ear", 75 },
    { (STRPTR) "Clear a_ll", 76 },
    { (STRPTR) "Do_wnload", 77 },
    { (STRPTR) "Searching...", 78 },
    { (STRPTR) "No files found.", 79 },
    { (STRPTR) "1 file found.", 80 },
    { (STRPTR) "%d files found.", 81 },
    { (STRPTR) "Requesting list from user...", 82 },
    { (STRPTR) "\033cSong", 83 },
    { (STRPTR) "\033cSize", 84 },
    { (STRPTR) "\033cTime", 85 },
    { (STRPTR) "\033cUser", 86 },
    { (STRPTR) "\033cLink", 87 },
    { (STRPTR) "File", 88 },
    { (STRPTR) "Bitrate", 89 },
    { (STRPTR) "Frequency", 90 },
    { (STRPTR) "MD5", 91 },
    { (STRPTR) "\033cStatus", 92 },
    { (STRPTR) "\033cCps", 93 },
    { (STRPTR) "\033cTime", 94 },
    { (STRPTR) "Amster Configuration", 95 },
    { (STRPTR) "Error", 96 },
    { (STRPTR) "You must be connected to change\n"\
	"your e-mail address.", 97 },
    { (STRPTR) "User", 98 },
    { (STRPTR) "Options", 99 },
    { (STRPTR) "Network", 100 },
    { (STRPTR) "Events", 101 },
    { (STRPTR) "Advanced", 102 },
    { (STRPTR) "Username", 103 },
    { (STRPTR) "Password", 104 },
    { (STRPTR) "E-Mail", 105 },
    { (STRPTR) "U_pdate", 106 },
    { (STRPTR) "Connection", 107 },
    { (STRPTR) "Download path", 108 },
    { (STRPTR) "Select your download directory...", 109 },
    { (STRPTR) "Clear list before new searches", 110 },
    { (STRPTR) "Auto-connect on program startup", 111 },
    { (STRPTR) "<to be deleted>", 112 },
    { (STRPTR) "Startup", 113 },
    { (STRPTR) "Exit", 114 },
    { (STRPTR) "Connect", 115 },
    { (STRPTR) "Disconnect", 116 },
    { (STRPTR) "Download finished", 117 },
    { (STRPTR) "Transfer error", 118 },
    { (STRPTR) "MP3 player", 119 },
    { (STRPTR) "Script", 120 },
    { (STRPTR) "Select ARexx script...", 121 },
    { (STRPTR) "Sound", 122 },
    { (STRPTR) "Select sound file...", 123 },
    { (STRPTR) "Test", 124 },
    { (STRPTR) "Meta server", 125 },
    { (STRPTR) "Amster gets MP3 server address from this\n"\
	"server. You don't need to change it.", 126 },
    { (STRPTR) "MP3 server", 127 },
    { (STRPTR) "MP3 server address. If you want to get it from\n"\
	"the meta server, leave this string empty.", 128 },
    { (STRPTR) "Version", 129 },
    { (STRPTR) "Listening port", 130 },
    { (STRPTR) "\033rBehind firewall", 131 },
    { (STRPTR) "_Save", 132 },
    { (STRPTR) "_Use", 133 },
    { (STRPTR) "_Cancel", 134 },
    { (STRPTR) "Cannot save configuration!", 135 },
    { (STRPTR) "Amster Debug", 136 },
    { (STRPTR) "_Clear", 137 },
    { (STRPTR) "Connected.", 138 },
    { (STRPTR) "Login failed!", 139 },
    { (STRPTR) "Logged in.", 140 },
    { (STRPTR) "<to be removed>", 141 },
    { (STRPTR) "Server is busy. Try again later.", 142 },
    { (STRPTR) "Got '%s' from Napster.", 143 },
    { (STRPTR) "Port number needed (hostname:port)!", 144 },
    { (STRPTR) "Nickname already registered.", 145 },
    { (STRPTR) "Amster Download", 146 },
    { (STRPTR) "<to be replaced>", 147 },
    { (STRPTR) "<to be replaced>", 148 },
    { (STRPTR) "<to be replaced>", 149 },
    { (STRPTR) "<to be replaced>", 150 },
    { (STRPTR) "<to be replaced>", 151 },
    { (STRPTR) "<to be replaced>", 152 },
    { (STRPTR) "<to be replaced>", 153 },
    { (STRPTR) "Play", 154 },
    { (STRPTR) "_Abort", 155 },
    { (STRPTR) "_Resume", 156 },
    { (STRPTR) "Cleanup", 157 },
    { (STRPTR) "Select filename to download...", 158 },
    { (STRPTR) "Resume Information", 159 },
    { (STRPTR) "\033cThe file '%s'\n"\
	"already exists in your download directory.\n"\
	"\n"\
	"\033bLocal file size: \033n%ld\n"\
	"\033bRemote file size: \033n%ld\n"\
	"\n"\
	"\033bLocal MD5 checksum:\n"\
	"\033n%s\n"\
	"\n"\
	"\033bRemote MD5 checksum:\n"\
	"\033n%s\n"\
	"\n"\
	"%s", 160 },
    { (STRPTR) "«N/A»", 161 },
    { (STRPTR) "File is already completely downloaded, or\n"\
	"remote file is smaller than local file.", 162 },
    { (STRPTR) "The files appear to be identical.\n"\
	"Resuming should be safe.", 163 },
    { (STRPTR) "The MD5 checksums of the files do not match.\n"\
	"Resuming would destroy your file.", 164 },
    { (STRPTR) "The file comment of the local file to resume\n"\
	"does not contain any MD5 checksum.\n"\
	"The files may not be identical.", 165 },
    { (STRPTR) "R_esume anyway|_Rename|_Overwrite|*_Cancel", 166 },
    { (STRPTR) "_Overwrite|_Rename|*_Cancel", 167 },
    { (STRPTR) "*_Resume|R_ename|_Overwrite|_Cancel", 168 },
    { (STRPTR) "Amster Messenger", 169 },
    { (STRPTR) "You're not connected!", 170 },
    { (STRPTR) "_Add", 171 },
    { (STRPTR) "_Remove", 172 },
    { (STRPTR) "Remove a_ll", 173 },
    { (STRPTR) "File sharing", 174 },
    { (STRPTR) "Select files to add", 175 },
    { (STRPTR) "Save library", 176 },
    { (STRPTR) "Load library", 177 },
    { (STRPTR) "Error adding '%s' (size: %ld, bitrate: %ld, frequency: %ld)", 178 },
    { (STRPTR) "%ld songs (%ld %s)", 179 },
    { (STRPTR) "kB", 180 },
    { (STRPTR) "MB", 181 },
    { (STRPTR) "GB", 182 },
    { (STRPTR) "Cannot open %s V%d!\n", 183 },
    { (STRPTR) "Cannot create mui app!\n", 184 },
    { (STRPTR) "TCP/IP stack needed!", 185 },
    { (STRPTR) "Network error.", 186 },
    { (STRPTR) "recv() error!", 187 },
    { (STRPTR) "Hostname lookup failed!", 188 },
    { (STRPTR) "Socket() error!", 189 },
    { (STRPTR) "Cannot connect!", 190 },
    { (STRPTR) "N\000Navigator", 191 },
    { (STRPTR) "Connect", 192 },
    { (STRPTR) "T\000Connect to...", 193 },
    { (STRPTR) "Reconnect", 194 },
    { (STRPTR) "Disconnect", 195 },
    { (STRPTR) "Upload", 196 },
    { (STRPTR) "L\000Last saved", 197 },
    { (STRPTR) "Hz", 198 },
    { (STRPTR) "kbps", 199 },
    { (STRPTR) "Paths", 200 },
    { (STRPTR) "\033ckbps", 201 },
    { (STRPTR) "\033cHz", 202 },
    { (STRPTR) "Logging into %s...", 203 },
    { (STRPTR) "Connection to %s failed -- %s.", 204 },
    { (STRPTR) "Uploading sharing library...", 205 },
    { (STRPTR) "unknown error #%d", 206 },
    { (STRPTR) "network is down", 207 },
    { (STRPTR) "network is unreachable", 208 },
    { (STRPTR) "connection reset by peer", 209 },
    { (STRPTR) "operation timed out", 210 },
    { (STRPTR) "connection refused", 211 },
    { (STRPTR) "broken pipe", 212 },
    { (STRPTR) "Res_ume", 213 },
    { (STRPTR) "%ld songs (%s %s)", 214 },
    { (STRPTR) "Requested file was not found in sharing database.\n", 215 },
    { (STRPTR) "User '%s' requested file '%s'.\n", 216 },
    { (STRPTR) "File '%s' already exists in library.\n", 217 },
    { (STRPTR) "Add _recursive", 218 },
    { (STRPTR) "_Play", 219 },
    { (STRPTR) "Select directory to add", 220 },
    { (STRPTR) "File '%s' cannot be shared (illegal characters in filename)", 221 },
    { (STRPTR) "File '%s' cannot be shared (invalid extension)", 222 },
    { (STRPTR) "At least one file failed to be added to library.\n"\
	"Please consult the debug window for details.", 223 },
    { (STRPTR) "Account", 224 },
    { (STRPTR) "The username to login with.", 225 },
    { (STRPTR) "Your password. Don't forget it, once\n"\
	"you have registered your account.", 226 },
    { (STRPTR) "Your e-mail address.", 227 },
    { (STRPTR) "Click this button to update your\n"\
	"e-mail address on the server.", 228 },
    { (STRPTR) "Choose your connection speed from this\n"\
	"list. Be honest with your choice.", 229 },
    { (STRPTR) "Directory where downloaded files\n"\
	"will be stored.", 230 },
    { (STRPTR) "Miscellaneous", 231 },
    { (STRPTR) "Always ask filename", 232 },
    { (STRPTR) "Add downloaded files to library", 233 },
    { (STRPTR) "Auto-save library on program exit", 234 },
    { (STRPTR) "Lamps", 235 },
    { (STRPTR) "Lamp class to use as link speed\n"\
	"indicator for each search result.", 236 },
    { (STRPTR) "Lamp", 237 },
    { (STRPTR) "TWFmultiLED", 238 },
    { (STRPTR) "Server list", 239 },
    { (STRPTR) "Don't remember", 240 },
    { (STRPTR) "Save on exit", 241 },
    { (STRPTR) "Cache servers", 242 },
    { (STRPTR) "\033bDon't remember:\n"\
	"\033nDo not save to file.\n"\
	"\n"\
	"\033bSave on exit:\n"\
	"\033nSave to file on program exit.\n"\
	"\n"\
	"\033bCache servers:\n"\
	"\033nAdd new servers to the list and\n"\
	"save it on program exit.", 243 },
    { (STRPTR) "Filename length", 244 },
    { (STRPTR) "Max. filename length. Files exceeding\n"\
	"this limit will be truncated and terminated\n"\
	"with the .mp3 extension.", 245 },
    { (STRPTR) "Upload finished", 246 },
    { (STRPTR) "Command", 247 },
    { (STRPTR) "AmigaDOS command used to play a file.\n"\
	"%f will be replaced with the filename.\n"\
	"Example:\n"\
	"\n"\
	"RexxC:RX Rexx/PlayAmigaAmp.rexx \"%f\"", 248 },
    { (STRPTR) "Network", 249 },
    { (STRPTR) "TCP port to use for incoming connections\n"\
	"(for both downloads and uploads) when the\n"\
	"other user is behind a firewall.", 250 },
    { (STRPTR) "Only make outgoing connections, so you\n"\
	"can download and share (upload) files\n"\
	"from behind a firewall.", 251 },
    { (STRPTR) "Transfer", 252 },
    { (STRPTR) "Concurrent downloads", 253 },
    { (STRPTR) "This is the maximum number of files\n"\
	"to download at the same time. The rest\n"\
	"will be queued and downloaded later.", 254 },
    { (STRPTR) "Concurrent uploads", 255 },
    { (STRPTR) "This is the maximum number of files\n"\
	"to upload at the same time. Requests\n"\
	"coming in when the queue if full will\n"\
	"be rejected.", 256 },
    { (STRPTR) "Unlimited", 257 },
    { (STRPTR) "Pri", 258 },
    { (STRPTR) "\033bCaution!\n"\
	"\033nThis sets the task priority. Only change this\n"\
	"to anything but 0 if you know what you are doing.", 259 },
    { (STRPTR) "Queue limit retries", 260 },
    { (STRPTR) "Number of times Amster retry download\n"\
	"request before giving up.", 261 },
    { (STRPTR) "Delay between retries", 262 },
    { (STRPTR) "Number of seconds between each retry.", 263 },
    { (STRPTR) "Failed to open main window!\n", 264 },
    { (STRPTR) "Account successfully registered.", 265 },
    { (STRPTR) "I/O error with file '%s'%s", 266 },
    { (STRPTR) "Homepage <http://home.worldonline.dk/~jlaur/amiga/amster>", 267 },
    { (STRPTR) "Mailing list <http://www.egroups.com/group/amster>", 268 },
    { (STRPTR) "Unofficial Napster FAQ <http://napster.cjb.net>", 269 },
    { (STRPTR) "\033cCopyright © 1999-2000 by Gürer Özen\n"\
	"Copyright © 2000 by Jacob Laursen\n"\
	"\n"\
	"MUI is copyright © by Stefan Stuntz\n"\
	"NList.mcc is copyright © by Gilles Masson\n"\
	"Lamp.mcc is copyright © by Maik Schreiber\n"\
	"TWFmultiLED.mcc is copyright © by Christopher Page", 270 },
    { (STRPTR) "\033c\033bAmster was brought to you by...\033n\n"\
	"\n"\
	"\033l\033i· Jacob Laursen <laursen@myself.com>\n"\
	"· Gürer Özen <palpa@linuxfan.com>\n"\
	"\033r\033nCoding\n"\
	"\n"\
	"\033l\033i· Jacob Laursen <laursen@myself.com>\n"\
	"\033r\033nDocumentation\n"\
	"\n"\
	"\033l\033i· Llorenç Grau <llor69@olivet.com>\n"\
	"\033r\033nCatalan translation\n"\
	"\n"\
	"\033l\033i· Vit Sindlar <sindlarv@voskop.cz>\n"\
	"\033r\033nCzech translation\n"\
	"\n"\
	"\033l\033i· Jacob Laursen <laursen@myself.com>\n"\
	"\033r\033nDanish translation\n"\
	"\n"\
	"\033l\033i· Frank Mosch <frank.mosch@pandora.be>\n"\
	"· Guno Heitman <Guno@cable.A2000.nl>\n"\
	"\033r\033nDutch translation\n"\
	"\n"\
	"\033l\033i· Janne Karppanen <janne.karppanen@quicknet.inet.fi>\n"\
	"· Samppa Rönkä <eksotic@dlc.fi>\n"\
	"\033r\033nFinnish translation\n"\
	"\n"\
	"\033l\033i· Jerome Chesnot <jchesnot@noname.fr>\n"\
	"\033r\033nFrench translation\n"\
	"\n"\
	"\033l\033i· Heiko Hayn <Smeagel@gmx.net>\n"\
	"· Sönke Tesch <s.tesch@sh-home.de>\n"\
	"\033r\033nGerman translation\n"\
	"\n"\
	"\033l\033i· Álmos Rajnai <racs@fs2.bdtf.hu>\n"\
	"· Péter Horváth <pcpince@syneco.hu>\n"\
	"\033r\033nHungarian translation\n"\
	"\n"\
	"\033l\033i· Francesco Celli <mc3510@mclink.it>\n"\
	"· Francesco Mancuso <mcfrank@mediatel.it>\n"\
	"\033r\033nItalian translation\n"\
	"\n"\
	"\033l\033i· Øyvind Falch <oyvind.falch@triumph.no>\n"\
	"\033r\033nNorwegian translation\n"\
	"\n"\
	"\033l\033i· Rúben Alvim <alvim_r@yahoo.com>\n"\
	"· Joel Alvim <mindwalker@mail.telepac.pt>\n"\
	"\033r\033nPortuguese translation\n"\
	"\n"\
	"\033l\033i· Oleg Sergeev <bigblack@mail.lanck.net>\n"\
	"· Andrew Boyarintsev <ntrs@redline.ru>\n"\
	"\033r\033nRussian translation\n"\
	"\n"\
	"\033l\033i· Uros Bogataj <urosb@technologist.com>\n"\
	"· Damir Arh <damir.arh@telesat.si>\n"\
	"\033r\033nSlovenian translation\n"\
	"\n"\
	"\033l\033i· Javier de las Rivas <javierdlr@retemail.es>\n"\
	"\033r\033nSpanish translation\n"\
	"\n"\
	"\033l\033i· Fredrik Söderberg <mcdrill@hem.passagen.se>\n"\
	"· Linus Andersson <linus_79@lover-boy.com>\n"\
	"\033r\033nSwedish translation", 271 },
    { (STRPTR) "\033c\033bThanks to...\033n\n"\
	"\n"\
	"\033l\033i· L. Peter Deutsch <ghost@aladdin.com>\n"\
	"\033r\033nFor the MD5 algorithm implementation\n"\
	"\n"\
	"\033l\033i· Roger Clark <kaedric@texas.net>\n"\
	"\033r\033nFor helping out in many ways\n"\
	"\n"\
	"\033l\033i· Johnny T. Nielsen <draco@mail1.stofanet.dk>\n"\
	"\033r\033nFor help with the thread code\n"\
	"\n"\
	"\033l\033i· Luca 'Hexaae' Longone <llong@tin.it>\n"\
	"\033r\033nFor the AppIcons and DeliTracker script\n"\
	"\n"\
	"\033cAnd to all the brave betatesters!", 272 },
    { (STRPTR) "Amster Upload", 273 },
    { (STRPTR) "_Play", 274 },
    { (STRPTR) "_Abort", 275 },
    { (STRPTR) "_Cleanup", 276 },
    { (STRPTR) "Queued", 277 },
    { (STRPTR) "Waiting (limit is %d)", 278 },
    { (STRPTR) "Preparing", 279 },
    { (STRPTR) "Connecting", 280 },
    { (STRPTR) "Requesting", 281 },
    { (STRPTR) "Initializing", 282 },
    { (STRPTR) "Downloading", 283 },
    { (STRPTR) "Uploading", 284 },
    { (STRPTR) "\033bFinished", 285 },
    { (STRPTR) "\033bAborted", 286 },
    { (STRPTR) "Stalled", 287 },
    { (STRPTR) "\033bError", 288 },
    { (STRPTR) "\033bCan't open file (%ld)", 289 },
    { (STRPTR) "\033bRead error (%ld)", 290 },
    { (STRPTR) "\033bWrite error (%ld)", 291 },
    { (STRPTR) "\033bNet error (%ld)", 292 },
    { (STRPTR) "\033bTimed out", 293 },
    { (STRPTR) "\033bConnection refused", 294 },
    { (STRPTR) "\033bConnection reset", 295 },
    { (STRPTR) "\033bBroken pipe", 296 },
    { (STRPTR) "\033bUser logged out", 297 },
    { (STRPTR) "\033bFile not found", 298 },
    { (STRPTR) "\033bInvalid request", 299 },
    { (STRPTR) "\033bTeaser", 300 },
    { (STRPTR) "\033bBusy", 301 },
    { (STRPTR) "Connect to...", 302 },
    { (STRPTR) "Server", 303 },
    { (STRPTR) "Username", 304 },
    { (STRPTR) "Password", 305 },
    { (STRPTR) "Register account", 306 },
    { (STRPTR) "_Connect", 307 },
    { (STRPTR) "Navigator", 308 },
    { (STRPTR) "Server", 309 },
    { (STRPTR) "Comment", 310 },
    { (STRPTR) "_Connect", 311 },
    { (STRPTR) "_Add", 312 },
    { (STRPTR) "_Remove", 313 },
    { (STRPTR) "_Update", 314 },
    { (STRPTR) "\033bDO NOT PRESS THIS BUTTON!", 315 },
    { (STRPTR) "-New server-", 316 },
    { (STRPTR) "\033bServer", 317 },
    { (STRPTR) "\033bLast online", 318 },
    { (STRPTR) "\033bComment", 319 },
    { (STRPTR) "\033bPing", 320 },
    { (STRPTR) "Spawn external MP3 player to play selected\n"\
	"file. You can set up your favourite player\n"\
	"in the events section of the configuration\n"\
	"window.", 321 },
    { (STRPTR) "Abort the selected transfer.", 322 },
    { (STRPTR) "Attempt to resume download of selected file.\n"\
	"A requester will pop up asking for confirmation.", 323 },
    { (STRPTR) "Flush all finished, aborted and\n"\
	"unsuccesful transfers from list.", 324 },
    { (STRPTR) "Global message from %s", 325 }
};

STATIC struct Catalog *AmsterCatalog = NULL;
#ifdef LOCALIZE_V20
STATIC STRPTR AmsterStrings = NULL;
STATIC ULONG AmsterStringsSize;
#endif


#if defined(_DCC)
STATIC __autoexit VOID _STDCloseAmsterCatalog(VOID)
#elif defined(__SASC)
VOID _STDCloseAmsterCatalog(VOID)
#elif defined(__GNUC__)
STATIC VOID _STDCloseAmsterCatalog(VOID)
#else
VOID CloseAmsterCatalog(VOID)
#endif

{
    if (AmsterCatalog) {
	CloseCatalog(AmsterCatalog);
    }
#ifdef LOCALIZE_V20
    if (AmsterStrings) {
	FreeMem(AmsterStrings, AmsterStringsSize);
    }
#endif
}


#if defined(_DCC)
STATIC __autoinit VOID _STIOpenAmsterCatalog(VOID)
#elif defined(__SASC)
VOID _STIOpenAmsterCatalog(VOID)
#elif defined(__GNUC__)
VOID _STIOpenAmsterCatalog(VOID)
#else
VOID OpenAmsterCatalog(VOID)
#endif

{
    if (LocaleBase) {
	if ((AmsterCatalog = OpenCatalog(NULL, (STRPTR) "Amster.catalog",
				     OC_BuiltInLanguage, "english",
				     OC_Version, 0,
				     TAG_DONE))) {
	    struct FC_String *fc;
	    int i;

	    for (i = 0, fc = Amster_Strings;  i < 326;  i++, fc++) {
		 fc->msg = GetCatalogStr(AmsterCatalog, fc->id, (STRPTR) fc->msg);
	    }
	}
    }
}

#if defined(__GNUC__)
__asm ("  .text;  .stabs \"___CTOR_LIST__\",22,0,0,__STIOpenAmsterCatalog");
__asm ("  .text;  .stabs \"___DTOR_LIST__\",22,0,0,__STDCloseAmsterCatalog");
#endif



#ifdef LOCALIZE_V20
VOID InitAmsterCatalog(STRPTR language)

{
    struct IFFHandle *iffHandle;

    /*
    **  Use iffparse.library only, if we need to.
    */
    if (LocaleBase  ||  !IFFParseBase  ||  !language  ||
	Stricmp(language, "english") == 0) {
	return;
    }

    if ((iffHandle = AllocIFF())) {
	char path[128]; /* Enough to hold 4 path items (dos.library 3.1)    */
	strcpy(path, "PROGDIR:Catalogs");
	AddPart((STRPTR) path, language, sizeof(path));
	AddPart((STRPTR) path, "Amster.catalog", sizeof(path));
	if (!(iffHandle->iff_Stream = Open((STRPTR) path, MODE_OLDFILE))) {
	    strcpy(path, "LOCALE:Catalogs");
	    AddPart((STRPTR) path, language, sizeof(path));
	    AddPart((STRPTR) path, language, sizeof(path));
	    iffHandle->iff_Stream = Open((STRPTR) path, MODE_OLDFILE);
	}

	if (iffHandle->iff_Stream) {
	    InitIFFasDOS(iffHandle);
	    if (!OpenIFF(iffHandle, IFFF_READ)) {
		if (!PropChunk(iffHandle, MAKE_ID('C','T','L','G'),
			       MAKE_ID('S','T','R','S'))) {
		    struct StoredProperty *sp;
		    int error;

		    for (;;) {
			if ((error = ParseIFF(iffHandle, IFFPARSE_STEP))
				   ==  IFFERR_EOC) {
			    continue;
			}
			if (error) {
			    break;
			}

			if ((sp = FindProp(iffHandle, MAKE_ID('C','T','L','G'),
					   MAKE_ID('S','T','R','S')))) {
			    /*
			    **  Check catalog and calculate the needed
			    **  number of bytes.
			    **  A catalog string consists of
			    **      ID (LONG)
			    **      Size (LONG)
			    **      Bytes (long word padded)
			    */
			    LONG bytesRemaining;
			    LONG *ptr;

			    AmsterStringsSize = 0;
			    bytesRemaining = sp->sp_Size;
			    ptr = (LONG *) sp->sp_Data;

			    while (bytesRemaining > 0) {
				LONG skipSize, stringSize;

				ptr++;                  /*  Skip ID     */
				stringSize = *ptr++;
				skipSize = ((stringSize+3) >> 2);

				AmsterStringsSize += stringSize+1;  /*  NUL */
				bytesRemaining -= 8 + (skipSize << 2);
				ptr += skipSize;
			    }

			    if (!bytesRemaining  &&
				(AmsterStrings = AllocMem(AmsterStringsSize, MEMF_ANY))) {
				STRPTR sptr;

				bytesRemaining = sp->sp_Size;
				ptr = (LONG *) sp->sp_Data;
				sptr = AmsterStrings;

				while (bytesRemaining) {
				    LONG skipSize, stringSize, id;
				    struct FC_String *fc;
				    int i;

				    id = *ptr++;
				    stringSize = *ptr++;
				    skipSize = ((stringSize+3) >> 2);

				    CopyMem(ptr, sptr, stringSize);
				    bytesRemaining -= 8 + (skipSize << 2);
				    ptr += skipSize;

				    for (i = 0, fc = Amster_Strings;  i < 326;  i++, fc++) {
					if (fc->id == id) {
					    fc->msg = sptr;
					}
				    }

				    sptr += stringSize;
				    *sptr++ = '\0';
				}
			    }
			    break;
			}
		    }
		}
		CloseIFF(iffHandle);
	    }
	    Close(iffHandle->iff_Stream);
	}
	FreeIFF(iffHandle);
    }
}
#endif
