Hi,

On 29/02/2012 15:22, Breno de Oliveira wrote:

Wx.pm... not so much. It's the same as before, where it passes all tests except 
one:

#   Failed test 'GetLanguageInfo isa Wx::LanguageInfo'
#   at t/21_locale.t line 9.
#     GetLanguageInfo isn't defined
Can't call method "GetCanonicalName" on an undefined value at t/21_locale.t 
line 11.
# Looks like you planned 4 tests but ran 1.
# Looks like you failed 1 test of 1 run.
# Looks like your test exited with 255 just after 1.
t/21_locale.t .........
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 4/4 subtests

It seems this is a wxWidgets issue:

http://trac.wxwidgets.org/ticket/14039

Wx can return an undefined value for
Wx::Locale::GetLanguageInfo(wxLANGUAGE_DEFAULT);

if it cannot determine default language.

Apparently, MacOSX system calls will return strings like 'en_CH' if during installation a user selects, say, a language of English and a location of Switzerland.

A simple workaround until the next wxWidgets release is to default to English if the system fails to find a default language

my $langinfo = Wx::Locale::GetLanguageInfo(wxLANGUAGE_DEFAULT);
$langinfo = Wx::Locale::GetLanguageInfo(wxLANGUAGE_ENGLISH) if !defined($langinfo);

Fix for t/21_locale.t now in SVN

Note: obviously the thing to do if you encounter 'aa_BB' and you don't support 'aa_BB' is to default to the short part 'aa'. However, we don't have access to that from wxWidgets in current interface.

If it is important to you in real code you could get it by doing

my $locstring = qx(defaults read NSGlobalDomain AppleLocale);

armed with that:

my $langinfo = Wx::Locale::GetLanguageInfo(wxLANGUAGE_DEFAULT);
if(!defined($langinfo)) {
  my $locstring = qx(defaults read NSGlobalDomain AppleLocale);
  my ($short, $discard) = split(/_/,  $locstring);
  $langinfo = Wx::Locale::FindLanguageInfo( $short );
}
die 'Blechh' if !defined($langinfo);


Hope it helps.


Mark
















Reply via email to