Recargar el guión gráfico para cambiar la configuración regional

Estoy utilizando un guión gráfico único y localizado para mi aplicación. La aplicación debe tener una opción para cambiar el idioma sobre la marcha. Hasta ahora he descubierto cómo cambiar el idioma que se usa durante el lanzamiento de la aplicación:

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

Y logré volver a cargar toda mi aplicación eliminando todas las subvistas de la ventana clave, recargando el controlador de vista inicial del guión gráfico y convirtiéndolo en el nuevo controlador de vista raíz. (Tiene algunos problemas, como la gestión de recursos abiertos, pero se puede hacer.)

Lo único que no pude entender es cómo obligar a iOS a volver a cargar el guión gráfico en el nuevo idioma. Parece que los guiones gráficos están en caché de alguna manera, y-UIStoryboad:stroyboardWithName:fromNib No lo vuelve a cargar por completo, por lo que aparece en el último idioma.

Ya he considerado otras dos opciones:

tener diferentes archivos de guión gráfico para cada idioma (es inamovible, no quiero hacer esto)

utilizando detectores de eventos en todos mis controladores de vista que responden a un cambio de idioma y establecen las nuevas cadenas en la interfaz de usuario (que también debe llamarse cada vez que se crea una instancia de cualquier elemento de la interfaz desde el guión gráfico). Esta solución requiere más tiempo del que nos gustaría dedicar a esto y también aumenta la posibilidad de errores.

¿Hay alguna manera más inteligente? No quiero mantener el estado actual de mi aplicación, por lo que reiniciarla como si hubiera sido cancelada y relanzada parece una solución razonable.

Respuestas a la pregunta(2)

Su respuesta a la pregunta