From owner-freebsd-i18n@FreeBSD.ORG Sun Apr 20 12:05:23 2008 Return-Path: Delivered-To: freebsd-i18n@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5CE02106566C for ; Sun, 20 Apr 2008 12:05:23 +0000 (UTC) (envelope-from sashi@gmx.de) Received: from mail.gmx.net (mail.gmx.net [213.165.64.20]) by mx1.freebsd.org (Postfix) with SMTP id ACC078FC0C for ; Sun, 20 Apr 2008 12:05:22 +0000 (UTC) (envelope-from sashi@gmx.de) Received: (qmail invoked by alias); 20 Apr 2008 11:38:39 -0000 Received: from e180219106.adsl.alicedsl.de (EHLO [49.1.1.104]) [85.180.219.106] by mail.gmx.net (mp057) with SMTP; 20 Apr 2008 13:38:39 +0200 X-Authenticated: #546547 X-Provags-ID: V01U2FsdGVkX19uSIFaav9uaKiVIq4nQCYzmwhZ5/jakGQh7Us54A ev93iGyCvBVk9e Message-ID: <480B2BEE.4010701@gmx.de> Date: Sun, 20 Apr 2008 13:41:34 +0200 From: sashi User-Agent: Thunderbird 2.0.0.9 (X11/20080213) MIME-Version: 1.0 To: freebsd-i18n@freebsd.org Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Y-GMX-Trusted: 0 Subject: Localization (L10n) with libstdc++ aborts with an exception X-BeenThere: freebsd-i18n@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: FreeBSD Internationalization Effort List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Apr 2008 12:05:23 -0000 Hello, while trying to instantiate std::locale on my FreeBSD 7.0-R system with LANG=de_DE.UTF-8, the compiled code aborts with an exception. Only LANG=C works. Here's the code you may want to try (compile with CC ): #include #include #include int main() { using std::cout; using std::endl; // C L10n const char* const lstr = std::setlocale(LC_ALL, ""); cout << "C setlocale()\nresult="; cout << ( lstr ? lstr : "0" ) << "\n" << endl; // C++ L10n cout << "C++ std::locale" << endl; std::locale loc(""); cout << "std::locale loc=" << loc.name() << endl; } Output (run with ./a.out): C setlocale() result=de_DE.UTF-8 C++ std::locale terminate called after throwing an instance of 'std::runtime_error' what(): locale::facet::_S_create_c_locale name not valid Abort (core dumped) My $LANG is set to de_DE.UTF-8 (via login.conf). locale -a|grep de_DE reports: de_DE.ISO8859-1 de_DE.ISO8859-15 de_DE.UTF-8 What I've found out so far: I suppose it has something to do with how libstdc++ is build under fBSD. There is an option for libstdc++ called --enable-clocale[=MODEL] use MODEL for target locale package [default=auto] the MODELs are located in the base system source directory /usr/src/contrib/libstdc++/config/locale/ And probably the "generic" (or "darwin") model is used, instead of "gnu" ?! Can anyone please help me with this ? gcc -v reports: Using built-in specs. Target: i386-undermydesk-freebsd Configured with: FreeBSD/i386 system compiler Thread model: posix gcc version 4.2.1 20070719 [FreeBSD] on my FreeBSD 7.0-RELEASE system. Thanks in advance for any ideas. -- Sashi Asokarajan