我的资源文件夹中有大约72个html文件,我需要对它们进行本地化。现在我用法语翻译了它们。文件选择取决于用户输入,因此文件名由变量创建。现在的问题是如何本地化变量的值。
例如,我在资源文件夹中有以下3个文件。
我还在资源文件夹中使用法语这些文件。
这是我的代码在没有本地化的情况下正常工作。
// ViewController.m File
appDelegate2=[[[UIApplication sharedApplication] delegate] retain];
NSString *getSign2=[appDelegate2.globalString stringByAppendingString:appDelegate2.globalindex];
NSString *filePath=[[NSBundle mainBundle] pathForResource:getSign2 ofType:@"html" ];
如果用户输入导致选择AAAAA0.html,则globalString将为“AAAAA”,globalIndex将为“0”,getSign2将为“AAAAA0”。
如果用户输入导致选择BBBBB28.html,则globalString将为“BBBBB”,globalIndex将为“28”,getSign2将为“BBBBB28”。
如果用户输入导致选择CCCCC33.html,则globalString将为“CCCCC”,globalIndex将为“33”,getSign2将为“CCCCC33”。
现在我已经有了一个Localizable.string文件,我的.xib文件已经本地化(所有标签,图像和日期选择器等)。
如果用户语言为法语,我想将getSign2的值从AAAAA0.html更改为AAAA0-French.html。同样,它应分别改为BBBB28-French.html和CCCC33-French.html,分别为BBBB28.html和CCCC33.html。
我应该在localizable.string中添加什么来执行此操作?我应该在ViewController.m文件中做出什么改变?
我知道我可以使用以下
NSLocale *locale=[NSLocale currentLocale];
NSString *currentlocale =[locale displayNameForKey:NSLocaleIdentifier value:[locale localeIdentifier]];
NSLog(@"Complete Locale: %@",currentlocale);
if (currentocale==@"French") {
NSString *getSignNew=[getSign2 stringByAppendingString:@"-French"];
NSString *filePath=[[NSBundle mainBundle] pathForResource:getSignNew ofType:@"html" ];
}
但是这个方法检查了ViewController.m文件中的条件,而我在localizable.string中完成了所有其他与本地化相关的编码。我提交申请时会引起问题吗?如果这不是正确的解决方案,那么请告诉我如何解决这个问题。
请尽快回复。
感谢。
答案 0 :(得分:2)
本地化文件应该放在如下结构中:
Your.app/
English.lproj/
AAAAA0.html // English localized file
....
French.lproj/
AAAAA0.html // French localized file
...
zh_TW.lproj/
AAAAA0.html // Chinese localized file
...
然后-pathForResource:ofType:
将自动查找与当前区域设置匹配的正确文件。