本地化的图像不加载没有应用程序重新启动

问题描述:

我想从应用程序内更改应用程序语言。 我能够实现这一点,并根据已更改的本地化更改文本,但直到我重新启动我的应用程序之前,本地化图像才加载。本地化的图像不加载没有应用程序重新启动

1)本地化图像放置在en.lproj和vi.lproj文件夹中。

2)图像显示在表格视图中,表格视图在语言改变后重新加载。

仍未获取本地化图像。

日志,我尝试打印>>

一个NSBundle /用户/管理员/库/应用程序支持/ iPhone模拟器/ 7.0 /应用/ 863CF1CB-C9C5-4257-8D6E-DA104C8EC849/test.app/EN。 lproj(尚未加载)

一个NSBundle /用户/管理员/库/应用程序支持/ iPhone模拟器/ 7.0 /应用/ 863CF1CB-C9C5-4257-8D6E-DA104C8EC849/test.app/vi.lproj(尚未加载)

谢谢。

+0

据我所知,选定的语言是一个系统范围的设置。当您在设置应用程序中更改语言时,iOS会自行“重新配置”自己和所有正在运行的应用程序(重新启动它们)。在运行时你可以选择字符串的本地化词典,就像我在这里做的那样:http://stackoverflow.com/a/22838176/1167428。我们也有图像问题,所以我们最终不使用系统本地化支持,而是从我们自己的本地化文件夹加载图像。通过这种方式,我们甚至可以实现似乎不受本地支持的语言区域(如en,en-UK,en-US,en-CA)。 – lupz 2014-11-24 10:16:26

有一个简单的解决方法,根据

使用带有不同的名称不同的图像的语言,并根据从代码选择的语言加载图像。

例如 在的tableView的cellForRowAtIndexPath方法

if(language = english) { 
imageName = @"logo_english"; 

} 

else if (language = french) { 
imageName = @"logo_french"; 
} 

否则,使用图像的苹果原生本地化的应用程式重新启动后生效。

+0

逻辑是好的,但如果文本可以从本地化文件中获取而不重新启动,那么我们可以用同样的方式处理图像... [不想改变图像名称] – Swati 2014-11-24 10:17:28

+0

为了改善这一点,可以使用一个实用函数,定位标记(文件后缀/前缀,文件夹)到资源名称。它有助于保持本地化处理[DRY](http://de.wikipedia.org/wiki/Don%E2%80%99t_repeat_yourself)。 – lupz 2014-11-24 10:35:09

你是如何载入图像的?如果您想覆盖为系统选择的语言,则可以使用-[NSBundle pathForResource:ofType:inDirectory:forLocalization:]来指定您在提取资源时要使用的本地化。