我创建了两个以en.lproj和fr.lproj命名的本地化目录。我在这些本地化的目录中放了两个名字如.png的不同图像。
现在我已经创建了一个表View Controller,分别有两行“English”和“French”文本。
选择第一行或第二行后,我在运行时获取包路径并更改应用的整个本地化文本。
代码:
-(NSString*) languageSelectedStringForKey:(NSString*) key
{
NSString *path;
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
if([[userDefault valueForKey:@"language_Selected"] intValue] == 0)
path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"];
else if([[userDefault valueForKey:@"language_Selected"] intValue] == 1)
path = [[NSBundle mainBundle] pathForResource:@"fr" ofType:@"lproj"];
NSBundle* languageBundle = [NSBundle bundleWithPath:path];
NSString* str=[[languageBundle localizedStringForKey:key value:@"" table:nil] retain];
return str;
}
通过动态上面的代码我可以改变运行应用程序的语言。 但是如何从该捆绑中获取图像?
任何想法?
谢谢
答案 0 :(得分:1)
据推测,您不希望更改每个图像,只需要更改包含文本或其他与文化相关的内容的图像。对于这些图像,您可以在包含给定语言的图像路径的localizable.strings
文件中添加一个条目,并使用此路径而不是硬编码路径。
也就是说,在许多情况下,您将UI中包含的图像作为.xib的一部分。在这些情况下你需要做的就是本地化xib(即为每种语言制作一个不同版本的.xib - 你可以通过属性面板中的Languages控件在XCode中完成此操作)并只需更改每种语言版本的图像.xib使用Interface Builder。