2012-01-25 101 views
3

我有一個本地化的iOS應用程序,我希望在其中包含一些本地化的HTML文件。我無法解決如何做到這一點。在XCode中本地化HTML文件

目前,我的文件夾結構是這樣的:

/myapp 
    /en.lrproj 
     /Localizable.strings 
    /fr.lrproj 
     /Localizable.strings 
    /webviews 
     /view1 
     /index.html 
     /pic1.png 
     /view2 
     /index.html 
     /pic2.png 

正如你所看到的,我現在有安排與相關聯的圖片自己的文件夾視圖。

在XCode中,當我選擇Localizable.strings文件時,我可以添加新的本地化。當搜索這個問題的解決方案時,我看到其他人對HTML文件也做了相同的處理,但是當我選擇HTML文件時,沒有顯示本地化的選項,所以我想知道文件夾結構是否是問題。

另一方面,我不知道如何將HTML結構化爲語言代碼文件夾,同時又不需要複製必須位於一側的圖形。

很明顯,我不理解的東西 - 我需要做些什麼來得到這個工作?

感謝,

回答

6

安排旁邊Localized.strings您的index.html,保持網內的圖片查看目錄:

/myapp 
    /en.lrproj 
     /Localizable.strings 
     /view1/index.html 
     /view2/index.html 
    /fr.lrproj 
     /Localizable.strings 
     /view1/index.html 
     /view2/index.html 
    /webviews 
     /view1 
     /pic1.png 
     /view2 
     /index.html 
     /pic2.png 

構建文件路徑:

NSArray* availableLocalizations = [[NSBundle mainBundle] localizations];  
NSArray* userPrefered = [NSBundle preferredLocalizationsFromArray:availableLocalizations forPreferences:[NSLocale preferredLanguages]]; 
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"view" forLocalization:[userPrefered objectAtIndex:0]]; 

html樹中的圖片現在類似於

/myapp/en.lrproj/view1/index.html 
/myapp/webviews/view1/pic1.png 

裏面您的index.html使<img>標籤指向../../../webview/pic1.png (不知道的,你需要../的數量。您可能想要打開終端,導航到/myapp/en.lrproj/view1/並使用ls ../../../webview/pic1.png進行測試。 )

+0

嗨。我遇到問題了。從Xcode,我如何將目錄結構添加到語言資源目錄?如果我添加一個XCode「組」,那麼當它被部署時我就失去了結構。如果我添加一個文件夾引用,那麼我不能通過Xcode添加新的本地化,並且這些文件不會被我的翻譯工具(Linguan)拾取。 – tarmes

+0

使用Finder來放置文件,然後回到Xcode中,將文件添加到項目中。如果文件已經是項目的一部分,則使用公用程序視圖更新路徑。對不起,凌能幫不了你。 – Olaf

+1

對。我必須將xx.lproj文件直接添加到項目中作爲文件夾引用,以便完整地複製它們的內部文件夾結構。 Xcode應付了這個罰款。然後我可以按照您的建議來做(因爲無法將數組傳遞給forLocalization:參數)。 – tarmes

2

我假設「webviews/view1/index.html」是英文,「webviews/view2/index.html」是法文。

NSString *dir = NSLocalizedString("webviews/view1", @"webdir"); 
NSString *path = [[NSBundle mainBundle]pathForResource:@"index" ofType:@"html" inDirectory:dir]; 
在Localizable.strings

法語

/* webdir */ 
"webviews/view1" = "webviews/view2"; 

I的一個視圖控制器使用下面上面的代碼進行測試。

[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:path]]]; 

「webviews」目錄應該是Xcode中的「文件夾引用」,而不是組。 (藍色目錄圖標,不是黃色的)

另外,注意不要在目錄名後面加上斜線,如「webviews/view2 /」。 我發現這可能是一個問題,當我在iOS 5.x上運行(我在5.0.1和5.1.1上測試過)。但在iOS 6.1.2上沒有問題。