carregando imagens do pacote correto ao localizar storyboards
Estou tentando adicionar uma opção para o usuário alternar entre o idioma árabe e inglês de dentro do aplicativo (sem ter que redefinir o idioma de todo o iPhone), eu consegui fazê-lo corretamente usando este método no AppDelegate arquivo .m:
-(void)switchTolanguage:(NSString *)lang{
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:lang] forKey:@"AppleLanguages"];
NSBundle *bnd = [NSBundle bundleWithPath:[[NSBundle mainBundle]pathForResource:lang ofType:@"lproj" ]];
UIStoryboard *storyBoard;
storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:bnd];
UIViewController *initViewController = [storyBoard instantiateInitialViewController];
self.window.rootViewController = initViewController;
}
Eu coloquei doisUIButtons
em um dos controladores de visualização no aplicativo para testar o método e funcionou bem: todosUILabels
, strings, etc ... no novo storyboard carregado (localizado) aparecem com o idioma selecionado correto, mas comuma exceção: o novo storyboard carregado não pega (carrega) suas imagens localizadas, ele pega as imagens do storyboard antigo (pacote antigo), ou seja, se o aplicativo for executado no pacote inglês e o usuário tocar no botão que alterna o idioma para o árabe , o aplicativo aparecerá com os controles e cordas árabes corretos, mas com imagens em inglês, voltar para o inglês, tudo ficará bem (cordas, rótulos e imagens em inglês ...)
Veja como meu storyboard está localizado:
e aqui está como cada imagem é localizada:
Como posso carregar as imagens do pacote correto quando o usuário alterna o idioma do aplicativo?
ATUALIZAR:
Aqui está um link para um projeto de exemplo para o que quero dizer, executar o exemplo e você vai notar quando você alterar o idioma de dentro do aplicativo, você vai notar que a imagem não é alterável ... e você também vai notar que o storyboard localizado não carrega a imagem certa em seu editor de design ...
P.S. não adicione comentários sobre o motivo pelo qual eu uso esse cenário para mudar de idioma, porque é uma exigência do cliente.