Forçar um local diferente funciona apenas para a atividade principal na pilha de trás

Eu tenho um pequeno problema sobre a localização de aplicativos:

Aqui está o caso - dei aos meus usuários uma opção parasempre use o aplicativo em norueguês, independentemente do idioma do sistema.

Funciona muito bem na maioria das vezes (eu vou para as configurações, marque a caixa para forçar norueguês, pressione "voltar" e a atividade anterior é exibida em norueguês - a mesma coisa "o contrário") parece atualizar corretamente (recarregar recursos) para a primeira atividade no meu "back stack".

Para ilustrar um cenário típico:

O usuário inicia o aplicativo e é apresentado à atividade principal (em inglês). De lá, ele seleciona a segunda atividade (também em inglês). Ele então entra em configurações (do menu na segunda atividade) e define a preferência para forçar o norueguês.

Quando ele, em seguida, navega de volta, a segunda atividade é atualizada corretamente e exibida em norueguês (até aí tudo bem). No entanto, quando ele pressiona "voltar" mais uma vez para retornar à atividade principal,isto ainda é exibido em inglês ...

Se ele voltar e lançar o aplicativo novamente, a atividade principal é exibida corretamente em norueguês ...

Há alguma mente brilhante aqui com uma sugestão para o que devo fazer?

Código fonte relevante:

Código incluído em todas as atividades para definir o idioma de exibição:

No onCreate:Globals.locale_default = Locale.getDefault().getDisplayLanguage();

public void onStart() {
    super.onStart();
    forceNorwegian = settings.getBoolean(getString(R.string.pref_key_forceNorwegian).toString(), false);
       if (forceNorwegian) {
           languageCheck("no");
       } else {
            Globals.locale = null;
            languageCheck(Globals.locale_default);
       }
}

public void languageCheck(String lang) {
    Globals.locale = new Locale( lang );
    // Check the current system locale and change it to Norwegian if it's not already the default
    Globals.checkLocale( this );
    if (Globals.language_changed) {
        // Restart activity
        Intent restart = getIntent();
        finish();
        Globals.language_changed = false;
        startActivity(restart);
    }
}

Globals.java:

public class Globals {

public static Locale locale = null;
    public static String locale_default = null;
    public static boolean language_changed = false;

    public static void checkLocale( Activity a ) {
        if( locale == null )
            return;

        Configuration config = a.getBaseContext().getResources().getConfiguration();
        if( !config.locale.equals( locale ) )
        {  // Change to the new locale.  Everything will need to be closed or reloaded.
            config.locale = locale;
            a.getBaseContext().getResources().updateConfiguration( config, null );
            language_changed = true;
        }
    }
}

questionAnswers(2)

yourAnswerToTheQuestion