Mercurial > pidgin
view src/protocols/icq/stdpackets.h @ 7724:613b20c69d2c
[gaim-migrate @ 8369]
this didn't cause me any problems yesterday, and it compiles, and bug fixing is a good thing.
"Some month ago I introduced translatable texts for "gaim --help" and
"gaim-remote --help".
Unfortunately the output of the translated text is often unreadable.
The problem is, that Gaim's *.po files have the UTF-8 locale (because
this is the default charset for GTK+ 2.0). But the users may have
configured other locales. For instance my SuSE Linux 9.0 system is
configured with LANG=de_DE@euro. "euro" is ISO-8859-1 (Western
character set, 8 Bit, with the Euro currency symbol). Lots of UTF-8
characters are unreadable if they are displayed in a 8 Bit charset
without conversion. Only the 7 Bit chars are displayed right.
There are two possible solutions:
1) Make the console texts untranslatable. This isn't very clever.
2) Convert the texts from UTF-8 to user's locale.
I choose the second solution.
The conversion cannot be made during the translation, because gettext
does not allow a mix of different character sets in one po-file.
My patch converts the console strings from UTF-8 to users locale.
Normally this works right, because most users have a locale which is
compatible with their language.
The case where a user uses a language (for instance German:
LANG=de_DE) with an incompatible character set (for instance the 7Bit
charset LC_CTYPE=C) is also handled. The user then sees a warning and
the original UTF-8 message.
At first I tried to make a new UTF-8 function in src/util.c. But the
function is needed 5 times in src/gaim-remote.c and 2 times in
src/main.c. gaim-remote is not linked against util.o. Also there are a
lot of dependencies from util.o to other files, so I will introduce a
lot of trouble to link gaim-remote against util.o.
So I only wrote a function in src/gaim-remote.c and used the UTF-8
conversion inline in src/main.c." --Bjoern Voigt
committer: Tailor Script <tailor@pidgin.im>
| author | Luke Schierer <lschiere@pidgin.im> |
|---|---|
| date | Wed, 03 Dec 2003 13:21:55 +0000 |
| parents | 424a40f12a6c |
| children |
line wrap: on
line source
/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* * $Id: stdpackets.h 2096 2001-07-31 01:00:39Z warmenhoven $ * * Copyright (C) 1998-2001, Denis V. Dmitrienko <denis@null.net> and * Bill Soudan <soudan@kde.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. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You 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. * */ #ifndef _ICQTCPPACKETS_H #define _ICQTCPPACKETS_H #ifdef HAVE_CONFIG_H #include <config.h> #endif #define ICQ_UDP_VER 0x0005 #define ICQ_TCP_VER 0x0003 /* TCP Packet Commands */ #define ICQ_TCP_HELLO 0xFF #define ICQ_TCP_CANCEL 0x07D0 #define ICQ_TCP_ACK 0x07DA #define ICQ_TCP_MESSAGE 0x07EE /* TCP Message Types */ #define ICQ_TCP_MSG_MSG 0x0001 #define ICQ_TCP_MSG_CHAT 0x0002 #define ICQ_TCP_MSG_FILE 0x0003 #define ICQ_TCP_MSG_URL 0x0004 #define ICQ_TCP_MSG_CONTACTLIST 0x0013 #define ICQ_TCP_MSG_READAWAY 0x03E8 #define ICQ_TCP_MSG_READOCCUPIED 0x03E9 #define ICQ_TCP_MSG_READNA 0x03EA #define ICQ_TCP_MSG_READDND 0x03EB #define ICQ_TCP_MSG_READFFC 0x03EC #define ICQ_TCP_MASS_MASK 0x8000 /* TCP Message Command Types */ #define ICQ_TCP_MSG_ACK 0x0000 #define ICQ_TCP_MSG_AUTO 0x0000 #define ICQ_TCP_MSG_REAL 0x0010 #define ICQ_TCP_MSG_LIST 0x0020 #define ICQ_TCP_MSG_URGENT 0x0040 #define ICQ_TCP_MSG_INVISIBLE 0x0090 #define ICQ_TCP_MSG_UNK_1 0x00A0 #define ICQ_TCP_MSG_AWAY 0x0110 #define ICQ_TCP_MSG_OCCUPIED 0x0210 #define ICQ_TCP_MSG_UNK_2 0x0802 #define ICQ_TCP_MSG_NA 0x0810 #define ICQ_TCP_MSG_NA_2 0x0820 #define ICQ_TCP_MSG_DND 0x1010 /* TCP Message Statuses */ #define ICQ_TCP_STATUS_ONLINE 0x0000 #define ICQ_TCP_STATUS_REFUSE 0x0001 #define ICQ_TCP_STATUS_AWAY 0x0004 #define ICQ_TCP_STATUS_OCCUPIED 0x0009 #define ICQ_TCP_STATUS_DND 0x000A #define ICQ_TCP_STATUS_NA 0x000E #define ICQ_TCP_STATUS_FREE_CHAT ICQ_TCP_STATUS_ONLINE #define ICQ_TCP_STATUS_INVISIBLE ICQ_TCP_STATUS_ONLINE #include "tcplink.h" icq_Packet *icq_TCPCreateInitPacket(icq_TCPLink *plink); icq_Packet *icq_TCPCreateStdPacket(icq_TCPLink *plink, WORD icq_TCPCommand, WORD type, const char *msg, WORD status, WORD msg_command); icq_Packet *icq_TCPCreateMessagePacket(icq_TCPLink *plink, const char *message); icq_Packet *icq_TCPCreateURLPacket(icq_TCPLink *plink, const char *message, const char *url); icq_Packet *icq_TCPCreateAwayReqPacket(icq_TCPLink *plink, WORD statusMode); icq_Packet *icq_TCPCreateChatReqPacket(icq_TCPLink *plink, const char *message); icq_Packet *icq_TCPCreateFileReqPacket(icq_TCPLink *plink, const char *message, const char *filename, DWORD size); void icq_TCPAppendSequence(icq_Link *icqlink, icq_Packet *p); void icq_TCPAppendSequenceN(icq_Link *icqlink, icq_Packet *p, DWORD seq); icq_Packet *icq_TCPCreateMessageAck(icq_TCPLink *plink, const char *message); icq_Packet *icq_TCPCreateURLAck(icq_TCPLink *plink, const char *message); icq_Packet *icq_TCPCreateContactListAck(icq_TCPLink *plink, const char *message); icq_Packet *icq_TCPCreateWebPagerAck(icq_TCPLink *plink, const char *message); icq_Packet *icq_TCPCreateChatReqAck(icq_TCPLink *plink, WORD port); icq_Packet *icq_TCPCreateChatReqCancel(icq_TCPLink *plink, WORD port); icq_Packet *icq_TCPCreateChatReqRefuse(icq_TCPLink *plink, WORD port, const char *reason); icq_Packet *icq_TCPCreateFileReqAck(icq_TCPLink *plink, WORD port); icq_Packet *icq_TCPCreateFileReqCancel(icq_TCPLink *plink, WORD port); icq_Packet *icq_TCPCreateFileReqRefuse(icq_TCPLink *plink, WORD port, const char *reason); icq_Packet *icq_TCPCreateChatInfoPacket(icq_TCPLink *plink, const char *name, DWORD foreground, DWORD background); icq_Packet *icq_TCPCreateChatInfo2Packet(icq_TCPLink *plink, const char *name, DWORD foreground, DWORD background); icq_Packet *icq_TCPCreateChatFontInfoPacket(icq_TCPLink *plink); icq_Packet *icq_TCPCreateFile00Packet(DWORD num_files, DWORD total_bytes, DWORD speed, const char *name); icq_Packet *icq_TCPCreateFile01Packet(DWORD speed, const char *name); icq_Packet *icq_TCPCreateFile02Packet(const char *filename, DWORD filesize, DWORD speed); icq_Packet *icq_TCPCreateFile03Packet(DWORD filesize, DWORD speed); icq_Packet *icq_TCPCreateFile04Packet(DWORD filenum); icq_Packet *icq_TCPCreateFile05Packet(DWORD speed); icq_Packet *icq_TCPCreateFile06Packet(int length, void *data); icq_Packet *icq_UDPCreateStdPacket(icq_Link *icqlink, WORD cmd); icq_Packet *icq_UDPCreateStdSeqPacket(icq_Link *icqlink, WORD cmd, WORD seq); #endif /* _ICQTCPPACKETS_H */ /* From `tcppackets.c': */
