adium-1.4 2750:ef079c389c19: Set LC_ALL to the locale libpurple ...

commits at adium.im commits at adium.im
Sat Nov 7 19:48:45 UTC 2009


details:	http://hg.adium.im/adium-1.4/rev/ef079c389c19
revision:	2750:ef079c389c19
author:		Zachary West <zacw at adium.im>
date:		Sat Nov 07 14:48:41 2009 -0500

Set LC_ALL to the locale libpurple uses for pt/pt_PT, which are not the same as they are treated on OS X. Refs #13377.

diffs (34 lines):

diff -r f1bdb2161e92 -r ef079c389c19 Plugins/Purple Service/adiumPurpleCore.m
--- a/Plugins/Purple Service/adiumPurpleCore.m	Sat Nov 07 14:43:56 2009 -0500
+++ b/Plugins/Purple Service/adiumPurpleCore.m	Sat Nov 07 14:48:41 2009 -0500
@@ -159,13 +159,25 @@
 	bind_textdomain_codeset("pidgin", "UTF-8");
 	textdomain("pidgin");
 	
-	const char *preferredLocale = [[[[NSBundle bundleForClass:[SLPurpleCocoaAdapter class]] preferredLocalizations] objectAtIndex:0] UTF8String];
+	NSString *preferredLocale = [[[NSBundle bundleForClass:[SLPurpleCocoaAdapter class]] preferredLocalizations] objectAtIndex:0];
+	
+	// OS X-ism.. "pt" is Brazilian Portuguese, "pt_PT" is Portugal Portuguese.
+	// However, libpurple delivers us localizations in the form of pt for pt_PT and pt_BR for pt.
+	if ([preferredLocale isEqualToString:@"pt"]) {
+		preferredLocale = @"pt_BR";
+	} else if ([preferredLocale isEqualToString:@"pt_PT"]) {
+		preferredLocale = @"pt";
+	}
+	
+	AILog(@"Setting %@ as LC_ALL", preferredLocale);
+	
+	const char *preferredLocaleString = [preferredLocale UTF8String];
 	//We should be able to just do setlocale()... but it always returns NULL, which indicates failure
-	/* setlocale(LC_MESSAGES, preferredLocale); */
-
+	/* setlocale(LC_MESSAGES, preferredLocaleString); */
+	
 	//So we'll set the environment variable for this process, which does work
-	setenv("LC_ALL", preferredLocale, /* overwrite? */ 1);
-	setenv("LC_MESSAGES", preferredLocale, /* overwrite? */ 1);
+	setenv("LC_ALL", preferredLocaleString, /* overwrite? */ 1);
+	setenv("LC_MESSAGES", preferredLocaleString, /* overwrite? */ 1);
 
 	//Initialize all external plugins.
 	init_all_plugins();




More information about the commits mailing list