Recarregar o storyboard para alterar a localidade

Estou usando um Storyboard único e localizado para o meu aplicativo. O aplicativo precisa ter uma opção para alterar o idioma rapidamente. Até agora, descobri como alterar o idioma usado durante o lançamento do aplicativo:

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"de", @"en", @"fr", nil] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize]; //to make the change immediate

E consegui recarregar meu aplicativo inteiro removendo todas as subvisões da janela principal, recarregando o controlador de exibição inicial do storyboard e tornando-o o novo controlador de exibição raiz. (Ele tem alguns problemas, como gerenciar recursos abertos, mas pode ser feito.)

A única coisa que não consegui descobrir é como forçar o iOS a recarregar o storyboard no novo idioma? Parece que os storyboards estão armazenados em cache de alguma forma, e-UIStoryboad:stroyboardWithName:fromNib não o recarrega completamente, por isso aparece no último idioma.

Eu já considerei duas outras opções:

ter arquivos de storyboard diferentes para cada idioma (é incontrolável, não quero fazer isso)

usando ouvintes de eventos em todos os meus controladores de exibição que respondem a uma mudança de idioma e definem as novas strings na interface do usuário (que também deve ser chamada toda vez que qualquer elemento da interface é instanciado no storyboard). Essa solução requer mais tempo do que gostaríamos de gastar com isso e também aumenta muito a possibilidade de erros.

Existe alguma maneira mais inteligente? Não quero manter o estado atual do meu aplicativo, portanto, reiniciá-lo como se tivesse sido morto e executado novamente parece uma resolução razoável.

questionAnswers(2)

yourAnswerToTheQuestion