2011-06-06 43 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