Weltwetter-Globus in 3D

Zu finden ist das tolle Teil das sogar Animationen beherrscht bei http://earth.nullschool.net/ auf der Webseite.

earth_globe_3d

Forecast IO

Nicht weniger beeindruckend ist http://forecast.io/ in dieser Hinsicht.

forecast_io_3d

Why do I blog this? Das ist einer der wenigen wirklich coolen Wettergloben im Web. Da ich die sammle wie Briefmarken… kommen da bald welche dazu… wer also welche kennt, bitte ich um Hinweise…

How to change app locale independently from iOS system locale

Flags of european languagesI just want to share a trick on how to gain control over the Locale used for your app. The following code snippet is put in the main-method which kicks of your app.

But basically you should call this code snippet in your app and then make the user quit/terminate the app afterwards to restart with the new set default language AND set these parameters here again depending on a flag you may have stored elsewhere. Because actually all those set default values are actually already used at an earlier point in time i.e. for date formatting.

int main(int argc, char *argv[])
{
    @autoreleasepool {
        
        // OVERRIDE LOCALE (BASICALLY DO THIS WHILE APP RUNS AND LET USER RESTART APP)
        BOOL shouldOverrideLocale = NO; // LET'S TRY TO OVERRIDE IT WITH en_US
        NSString *languageIdentifier = @"en";
        NSString *countryIdentifier = @"US";
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        
        if( shouldOverrideLocale ) {
            NSLog( @"OVERRIDING SYSTEM LOCALE WITH : %@_%@",languageIdentifier, countryIdentifier );
            [defaults setObject:[NSArray arrayWithObject:languageIdentifier] forKey:@"AppleLanguages"];
            [defaults setObject:[NSArray arrayWithObjects:languageIdentifier, nil] forKey:@"NSLanguages"];
            [defaults setObject:[NSString stringWithFormat:@"%@_%@", languageIdentifier, countryIdentifier] forKey:@"AppleLocale"];
            [defaults synchronize];
        }
        else {
            NSArray *keysToRemove = @[@"AppleLanguages",@"NSLanguages",@"AppleLocale"];
            NSLog( @"RESETTING TO USE SYSTEM LOCALE" );
            @try {
                for( NSString *currentKey in keysToRemove ) {
                    if( [defaults objectForKey:currentKey] ) {
                        [defaults removeObjectForKey:currentKey];
                    }
                }
            }
	        @catch (NSException *exception) {
	            // NOTHNG TO CATCH HERE
	        }
	        @finally {
				[defaults synchronize];
	        }
        }
        NSString *languageCode = [[NSLocale autoupdatingCurrentLocale] objectForKey:NSLocaleLanguageCode];
        NSString *countryCode = [[NSLocale autoupdatingCurrentLocale] objectForKey:NSLocaleCountryCode];
        NSLog( @"USING SYSTEM LOCALE: %@_%@", languageCode, countryCode );

        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

If you use this code, keep in mind, that strings and processes related to In-App-Purchase are still delivered in the native language of the user.

See also my Example App in the Github repo called LocaleOverrider.


preview

There may exist other ways of doing this. It may also be the better approach to handle all localization on your own an reinitializing NSBundle usage.

A more advanced insight into localization issues provides help on all the NSNumberFormatter and NSDateFormatter thingys, too. It is written by Ray Lillywhite and has the title „The Nitty Gritty of iOS Internationalization and Localization“.

Update 26.12.2018
How to change language elegantly at runtime.

Why do I blog this? I mentioned this code in UISprech podcast and I want to make it available to others. But be warned, it has side effects of providing the user e.g. with inconsistent language when he enters IAP e.g. and you need to find a way to elegantly terminate the app after you configured the new default language. (Pro-Tipp: shutting down an app that is already in the background won’t be noticed as a crash.)

The Fixer’s Manifesto

Das Manifest (als PDF) für alle, die Geräte lieber reparieren statt wegzuschmeißen.


The_fixers_manifest

Das Manifest der „Reparierer“

1. Wenn es kaputt ist, repariere es. Weil das tägliche, praktische Lösen von Problemen die schönste Form der Kreativität ist, die es gibt.

2. Wenn es nicht kaputt ist, verbessere es. Eine kleine, clevere Optimierung kann die Funktion von etwas für die kommenden Jahre verbessern.

3. Verlängere das Leben deiner Produkte. Wenn wir die Lebensdauer unseres Krams verdoppeln, halbieren wir die Müllhalden.

4. Reparieren bedeutet Freiheit und Unabhängigkeit. Wenn du Dinge reparierst, musst du dir keine Sorgen um die Abnutzung machen. Nichts bleibt neu, also vergiss Perfektion.

5. Widerstehe Trends und nutzlosen Verbesserungen. Sie fördern die Wegwerfkultur.

6. Lass dich nicht von Firmen als passiver Konsument behandeln. Jedes Mal, wenn wir Geld ausgeben stimmen wir auch über die Produkte ab, die Erfolg haben sollen. Kaufe Produkte, die repariert werden können.

7. Eine reparierte Sache ist etwas Schönes. Jede Reparatur, egal ob kunstvoll oder improvisiert, erzählt eine Geschichte.

8. Wenn du eine Idee hast, fange klein an und mache es gut. Wenn es richtig ist, wird es wachsen.

9. Pflege deine Neugierde. Probiere Dinge, die du noch nie zuvor gemacht hast. Es ist gut für dein Gehirn und deine Seele. Habe keine Angst zu scheitern – es macht den Erfolg nur umso süßer.

10. Alle Menschen sind unterschiedlich. Produkte sollten es auch sein. Alles kann verbessert oder individuell angepasst werden.

11. Die Lebensdauer eines Produktes ist eine Entscheidung, keine Eigenschaft. Kunststoffe sind nicht böse, aber wir setzen sie falsch ein. Behandele sie mit Respekt.

12. Lass andere an deinen Idee, deinem Enthusiasmus und deinen Fähigkeiten teilhaben. Wenn du die Freude am Reparieren entdeckt hast, gib sie weiter. Es ist ein Talent.

Von den Erfindern von sugru.
Inspiriert durch das Manifest von Platform 21, ifixit, Holstee und den Cult of Done.

Why do I blog this? Weil das Reparieren eine der schönsten Tätigkeiten ist die man so machen kann. Am Ende steht ein wieder funktionierendes Ding, das einem das Leben leichter macht. Außerdem übt es einen darin die Dinge zu verstehen. Leider werden immer mehr Produkte hergestellt, bei denen es das Hauptdesignziel ist, dem Kunden das Reparieren so schwer wie nur irgend möglich zu machen. Denn wir sollen alles was wir kaufen möglichst schnell wegwerfen, damit wir was Neues brauchen. Oft werden Dinge sogar aktiv kaputt gemacht vom Hersteller z.B. bei dem Einbau von Elektrolyt-Kondensatoren in TV-Geräten, die ganz gezielt an Stellen untergebracht werden an denen sie Wärmeemission ausgesetzt werden, um kaputt zu gehen. Es lohnt sich zu also wissen, wie man diese Elko’s selber austauschen und reparieren kann.