]> git.saurik.com Git - cydia.git/commitdiff
I really really hate these locale codes.
authorJay Freeman (saurik) <saurik@saurik.com>
Sun, 27 Feb 2011 22:42:07 +0000 (14:42 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Mon, 7 Mar 2011 10:41:26 +0000 (02:41 -0800)
MobileCydia.mm

index 731f6aa3ee62104cf0601f953d21e7a7ff26f0aa..10f47fd8e14fa69dcc761a00b43b948c91736e90 100644 (file)
@@ -10157,16 +10157,23 @@ int main(int argc, char *argv[]) { _pooled
     const char *lang;
     if (Locale_ != NULL)
         lang = [(NSString *) CFLocaleGetIdentifier(Locale_) UTF8String];
-    else if (Languages_ == nil || [Languages_ count] == 0)
+    else if (Languages_ != nil && [Languages_ count] != 0)
+        lang = [[Languages_ objectAtIndex:0] UTF8String];
+    else
         // XXX: consider just setting to C and then falling through?
         lang = NULL;
-    else {
-        lang = [[Languages_ objectAtIndex:0] UTF8String];
-        setenv("LANG", lang, true);
-        std::setlocale(LC_ALL, lang);
+
+    if (lang != NULL) {
+        Pcre pattern("^([a-z][a-z])(?:-[A-Za-z]*)?(_[A-Z][A-Z])?$");
+        lang = !pattern(lang) ? NULL : [pattern->*@"%1$@%2$@" UTF8String];
     }
 
     NSLog(@"Setting Language: %s", lang);
+
+    if (lang != NULL) {
+        setenv("LANG", lang, true);
+        std::setlocale(LC_ALL, lang);
+    }
     /* }}} */
 
     apr_app_initialize(&argc, const_cast<const char * const **>(&argv), NULL);