2011-06-06 51 views
0

我的资源文件夹中有大约72个html文件,我需要对它们进行本地化。现在我用法语翻译了它们。文件选择取决于用户输入,因此文件名由变量创建。现在的问题是如何本地化变量的值。iOS上变量值的本地化

例如,我在资源文件夹中有以下3个文件。

  1. AAAAA0.html
  2. BBBBB28.html
  3. CCCCC33.html

我也有在资源文件夹中的法国与这些文件。

  1. AAAAA0-French.html
  2. BBBBB28-French.html
  3. 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所有其他本地化相关的编码。当我提交申请时会造成问题吗?如果这不是正确的解决方案,那么请告诉我如何解决这个问题。

请尽快回复。

谢谢。

回答

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:会自动查找正确的文件匹配当前的语言环境。

+0

我将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

+0

我正在读取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

+0

@chits:在另一个'.lproj'里面没有'.lproj'是不正常的。如果您在Xcode中选择“本地化”,应该为您自动创建'.lproj'文件。 – kennytm 2011-06-06 17:43:24