1 /* Implementation of gettext(3) function.
2 Copyright (C) 1995, 1997 Free Software Foundation, Inc.
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2, or (at your option)
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software Foundation,
16 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. */
18 #include "intlconfig.h"
25 # include <stdlib.h> /* Just for NULL. */
30 # define NULL ((void *) 0)
38 # include "libgettext.h"
41 /* @@ end of prolog @@ */
43 /* Names for the libintl functions are a problem. They must not clash
44 with existing names and they should follow ANSI C. But this source
45 code is also used in GNU C Library where the names have a __
46 prefix. So we have to make a difference here. */
48 # define GETTEXT __gettext
49 # define DGETTEXT __dgettext
51 # define GETTEXT gettext__
52 # define DGETTEXT dgettext__
55 #include <windows.h> // Added by Wei Mingzhi 5-4-2010
57 /* Look up MSGID in the current default message catalog for the current
58 LC_MESSAGES locale. If not found, returns MSGID itself (the default
64 // return DGETTEXT (NULL, msgid);
66 // 5-24-2010 Wei Mingzhi
67 // Hack for UTF-8 support
68 char *t = DGETTEXT(NULL, msgid);
70 static char bufout[16384];
72 if (MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)t, -1, (LPWSTR)buf, sizeof(buf)) == 0) {
76 if (WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)buf, -1, (LPSTR)bufout, sizeof(bufout), NULL, NULL) == 0) {
84 /* Alias for function name in GNU C Library. */
85 weak_alias (__gettext, gettext);