Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何在运行时更改本地化图像_Objective C_Dynamic_Localization - Fatal编程技术网

Objective c 如何在运行时更改本地化图像

Objective c 如何在运行时更改本地化图像,objective-c,dynamic,localization,Objective C,Dynamic,Localization,我创建了两个名为en.lproj和fr.lproj的本地化目录。我在这些本地化目录中放置了两个同名的不同图像,如.png 现在,我已经创建了一个表视图控制器,分别有两行“英语”和“法语”文本 选择第一行或第二行后,我将获取捆绑路径,并在运行时更改应用程序的整个本地化文本 代码: 通过上面的代码,我可以动态地更改运行应用程序的语言。 但是如何从这个包中获取图像呢 有什么想法吗 谢谢您可能不想更改每个图像,只想更改包含文本或其他文化相关内容的图像。对于这些图像,您可以向包含给定语言的图像路径的loc

我创建了两个名为en.lproj和fr.lproj的本地化目录。我在这些本地化目录中放置了两个同名的不同图像,如.png

现在,我已经创建了一个表视图控制器,分别有两行“英语”和“法语”文本

选择第一行或第二行后,我将获取捆绑路径,并在运行时更改应用程序的整个本地化文本

代码:

通过上面的代码,我可以动态地更改运行应用程序的语言。 但是如何从这个包中获取图像呢

有什么想法吗


谢谢

您可能不想更改每个图像,只想更改包含文本或其他文化相关内容的图像。对于这些图像,您可以向包含给定语言的图像路径的
localizable.strings
文件中添加一个条目,并使用此路径而不是硬编码路径


也就是说,在许多情况下,UI中会包含作为.xib一部分的图像。在这些情况下,您只需本地化xib(即,为每种语言生成不同版本的.xib——您可以通过“属性”面板中的“语言”控件在XCode中进行此操作),并使用Interface Builder更改.xib的每种语言版本中的映像。

使用path变量并使用path获取映像,您已经从上面的代码中获得了动态路径。感谢您的回复:)。。明白了,有什么理由否决这个问题吗?
-(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;
}