我的资源文件夹中有大约72个html文件,我需要对它们进行本地化。现在我用法语翻译了它们。文件选择取决于用户输入,因此文件名由变量创建。现在的问题是如何本地化变量的值。iOS上变量值的本地化
例如,我在资源文件夹中有以下3个文件。
- AAAAA0.html
- BBBBB28.html
- CCCCC33.html
我也有在资源文件夹中的法国与这些文件。
- AAAAA0-French.html
- BBBBB28-French.html
- CCCCC33-French.html
这里是我的代码是没有的本地化工作的罚款。
// 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 ([email protected]"French") {
NSString *getSignNew=[getSign2 stringByAppendingString:@"-French"];
NSString *filePath=[[NSBundle mainBundle] pathForResource:getSignNew ofType:@"html" ];
}
但在ViewController.m文件,这种方法检查状态,而我已经做了在localizable.string所有其他本地化相关的编码。当我提交申请时会造成问题吗?如果这不是正确的解决方案,那么请告诉我如何解决这个问题。
请尽快回复。
谢谢。
我将french.LPROJ文件夹中的所有法语文件复制过来,但它没有自动检测到它们。我有3个.xib文件1. datepickerviewcontroller.xib 2. second.xib 3.third.xib。我已经本地化了所有3个.xib文件。它在主目录中创建了一个包含datepickerviewcontroller.xib和localizable.string的french.lproj。但它也创建了包含second.xib和third.xib的classes文件夹下的french.lproj。为什么我有两个french.lproj文件夹。应该只有一个。拥有多个french.lproj文件夹是否正常?我在两个文件夹中复制了法文文件,但它不能读取。 – chits12345 2011-06-06 11:12:59
我正在读取main.m文件中的一个数组attributes.plist作为mainbundle。 NSString * filePath = [[NSBundle mainBundle] pathForResource:NSLocalizedString(@“attributes”,“”)ofType:NSLocalizedString(@“plist”,@“”)];工作正常的属性-french.plist为“属性”不是一个可变的,在我的localizable.string文件中我使用的是“attributes”=“attributes-French”;但同样的东西不适用于getSIgn2,因为它是一个变量,我试过pathForResource:NSLocalizedString(@“getSign2”,@“”)和pathForResource:NSLocalizedString(getSign2,@“”)。我如何解决它? – chits12345 2011-06-06 11:22:25
@chits:在另一个'.lproj'里面没有'.lproj'是不正常的。如果您在Xcode中选择“本地化”,应该为您自动创建'.lproj'文件。 – kennytm 2011-06-06 17:43:24