1 # locale-fr.m4 serial 13
2 dnl Copyright (C) 2003, 2005-2011 Free Software Foundation, Inc.
3 dnl This file is free software; the Free Software Foundation
4 dnl gives unlimited permission to copy and/or distribute it,
5 dnl with or without modifications, as long as this notice is preserved.
9 dnl Determine the name of a french locale with traditional encoding.
10 AC_DEFUN([gt_LOCALE_FR],
12 AC_REQUIRE([AC_CANONICAL_HOST])
13 AC_REQUIRE([AM_LANGINFO_CODESET])
14 AC_CACHE_CHECK([for a traditional french locale], [gt_cv_locale_fr], [
15 AC_LANG_CONFTEST([AC_LANG_SOURCE([
19 #if HAVE_LANGINFO_CODESET
20 # include <langinfo.h>
27 /* Check whether the given locale name is recognized by the system. */
28 #if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
29 /* On native Win32, setlocale(category, "") looks at the system settings,
30 not at the environment variables. Also, when an encoding suffix such
31 as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
32 category of the locale to "C". */
33 if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
34 || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
37 if (setlocale (LC_ALL, "") == NULL) return 1;
39 /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
40 On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
41 is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
42 On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
43 succeeds but then nl_langinfo(CODESET) is "646". In this situation,
45 On MirBSD 10, when an unsupported locale is specified, setlocale()
46 succeeds but then nl_langinfo(CODESET) is "UTF-8". */
47 #if HAVE_LANGINFO_CODESET
49 const char *cs = nl_langinfo (CODESET);
50 if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
51 || strcmp (cs, "UTF-8") == 0)
56 /* On Cygwin, avoid locale names without encoding suffix, because the
57 locale_charset() function relies on the encoding suffix. Note that
58 LC_ALL is set on the command line. */
59 if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
61 /* Check whether in the abbreviation of the second month, the second
62 character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
63 one byte long. This excludes the UTF-8 encoding. */
64 t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
65 if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
66 /* Check whether the decimal separator is a comma.
67 On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
68 are nl_langinfo(RADIXCHAR) are both ".". */
69 if (localeconv () ->decimal_point[0] != ',') return 1;
74 if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
75 # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
76 # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
77 # configure script would override the LC_ALL setting. Likewise for
78 # LC_CTYPE, which is also set at the beginning of the configure script.
79 # Test for the usual locale name.
80 if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
83 # Test for the locale name with explicit encoding suffix.
84 if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
85 gt_cv_locale_fr=fr_FR.ISO-8859-1
87 # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
88 if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
89 gt_cv_locale_fr=fr_FR.ISO8859-1
91 # Test for the HP-UX locale name.
92 if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
93 gt_cv_locale_fr=fr_FR.iso88591
95 # Test for the Solaris 7 locale name.
96 if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
109 LOCALE_FR=$gt_cv_locale_fr
110 AC_SUBST([LOCALE_FR])
113 dnl Determine the name of a french locale with UTF-8 encoding.
114 AC_DEFUN([gt_LOCALE_FR_UTF8],
116 AC_REQUIRE([AM_LANGINFO_CODESET])
117 AC_CACHE_CHECK([for a french Unicode locale], [gt_cv_locale_fr_utf8], [
118 AC_LANG_CONFTEST([AC_LANG_SOURCE([
122 #if HAVE_LANGINFO_CODESET
123 # include <langinfo.h>
130 /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl
131 imitates locale dependent behaviour by looking at the environment
132 variables, and all locales use the UTF-8 encoding. */
133 #if !(defined __BEOS__ || defined __HAIKU__)
134 /* Check whether the given locale name is recognized by the system. */
135 # if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
136 /* On native Win32, setlocale(category, "") looks at the system settings,
137 not at the environment variables. Also, when an encoding suffix such
138 as ".65001" or ".54936" is speficied, it succeeds but sets the LC_CTYPE
139 category of the locale to "C". */
140 if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
141 || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
144 if (setlocale (LC_ALL, "") == NULL) return 1;
146 /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
147 On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
148 is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
149 On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
150 succeeds but then nl_langinfo(CODESET) is "646". In this situation,
151 some unit tests fail. */
152 # if HAVE_LANGINFO_CODESET
154 const char *cs = nl_langinfo (CODESET);
155 if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
160 /* On Cygwin, avoid locale names without encoding suffix, because the
161 locale_charset() function relies on the encoding suffix. Note that
162 LC_ALL is set on the command line. */
163 if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
165 /* Check whether in the abbreviation of the second month, the second
166 character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
167 two bytes long, with UTF-8 encoding. */
168 t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
169 if (strftime (buf, sizeof (buf), "%b", &t) < 4
170 || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
173 /* Check whether the decimal separator is a comma.
174 On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
175 are nl_langinfo(RADIXCHAR) are both ".". */
176 if (localeconv () ->decimal_point[0] != ',') return 1;
181 if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
182 # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
183 # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
184 # configure script would override the LC_ALL setting. Likewise for
185 # LC_CTYPE, which is also set at the beginning of the configure script.
186 # Test for the usual locale name.
187 if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
188 gt_cv_locale_fr_utf8=fr_FR
190 # Test for the locale name with explicit encoding suffix.
191 if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
192 gt_cv_locale_fr_utf8=fr_FR.UTF-8
194 # Test for the Solaris 7 locale name.
195 if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
196 gt_cv_locale_fr_utf8=fr.UTF-8
199 gt_cv_locale_fr_utf8=none
206 LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
207 AC_SUBST([LOCALE_FR_UTF8])