2011-09-06 63 views
2

是否可以使用Xcode中的宏本地化頭文件?頭文件的本地化iOS

讓我們說英語我可能想要一個字體的大小爲17.0f,但爲西班牙語13.0f。

可以這樣做嗎?

回答

1

想通了。我所要求的是不可能的。頭文件在構建期間被評估,但本地化在運行期間被設置。

+0

有趣的是,當我在NSDate上創建一個類別時,我遇到了這個問題,以便給我一個字符串,其中包含從日期開始的相對時間,例如:24分鐘前,我需要用西班牙語來表示本地化.m文件,但這些更改沒有生效,如果允許開發人員在Xcode中本地化這些文件(如果它不會真正在設備上執行此操作),似乎很奇怪,但考慮到運行時的反思,這似乎是合乎邏輯的。我會盡力做AliSoftware建議http://stackoverflow.com/a/7321305/662605 – Daniel

2

您可以在您的.lproj本地化文件夾中放置一個PLIST文件(比如說「constants.plist」)(把PLIST文件放在Localizable.strings文件的一邊,位於en.lproj/fr.lproj/es.lproj/......)。

然後PLIST可能包含您需要根據用戶區域設置(例如您的字體大小)自定義的每個值的鍵/值對的NSDictionary。

然後你可以使用:

NSString* plistPath = [[NSBundle mainBundle] pathForResource:@"constants" ofType:@"plist"]; // will return the path of the plist in the right language-specific .lproj directory) 
NSDictionary* constants = [NSDictionary dictionaryWithContentsOfFile:plistPath]; 

float fontSize = [[constants objectForKey:@"fontSize"] floatValue]; // or whatever key you use in your plist for this constant 

然後,這是很容易爲你的應用的每個語言不同,constants.plist。

+0

是的。這是解決方案:) – johan

+0

偉大的:)(如果是這樣,你可以歸因於我的答案「解決」標記,而不是你的「這是不可能的」自己的答案...... P) – AliSoftware

+0

這是解決方案。然而,問題是「是否可以在Xcode中使用宏本地化頭文件?」。我不認爲你的帖子會回答這個問題。 – johan