3
A
回答
3
如果language
將返回其他值這樣的 「FR-FR」 和 「FR-CA」,那麼你應該在-
字符分割language
。即使你只是得到「fr」,這也可以工作。
NSString *firstLanguage = [[NSLocale preferredLanguages] firstObject];
NSString *language = [[firstLanguage componentsSeparatedByString:@"-"] firstObject];
if ([language isEqualToString:@"fr"]) {
} else {
}
1
嘿,不要做這樣的定位時設置爲不同的區域像es-mx
和es-cl
語言不同它將創建問題。在這種情況下,上述解決方案會產生問題 使用下面的解決方案代碼:
NSString *selectedLanguage = [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0];
如果您已經從設置,但您的應用程序只有zh-Hans-TW
和zh-Hans-CN
選擇zh-Hans-US
。以上代碼將返回您"zh-Hans-TW"
第一首選本地化。
試試這可能對你有用。
0
貼上我的代碼在這裏,也許幫助您
- (NSString *)localizedStringForKey:(NSString *)key withDefault:(NSString *)defaultString
{
static NSBundle *bundle = nil;
if (bundle == nil)
{
NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"your_resources" ofType:@"bundle"];
bundle = [NSBundle bundleWithPath:bundlePath] ?: [NSBundle mainBundle];
//manually select the desired lproj folder
for (NSString *language in [NSLocale preferredLanguages])
{
for (NSString *loc in [bundle localizations]) {
if ([language hasPrefix:loc])
{
bundlePath = [bundle pathForResource:loc ofType:@"lproj"];
bundle = [NSBundle bundleWithPath:bundlePath];
goto getString;
}
}
}
}
getString:
defaultString = [bundle localizedStringForKey:key value:defaultString table:nil];
return [[NSBundle mainBundle] localizedStringForKey:key value:defaultString table:nil];
}
1
你不應該分裂NSLocale。 NSLocale有一些鍵,您可以用objectForKey:
檢索在您的例子,你可以寫:
[[[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode]
isEqualToString:@"fr"]
[NSLocale currentLocale]
其實是一樣的[[NSLocale preferredLanguages] firstObject]
但其中小數點分隔一些額外的信息,你可以檢索應該使用哪種貨幣符號。
其他相關Keys可以在蘋果的class reference中找到。
0
我對我的代碼修復很簡單:
NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0];
NSRange range = [language rangeOfString:@"-" options:NSBackwardsSearch];
NSString * languageMark = [language substringToIndex:range.location];
相關問題
- 1. `NSLocale preferredLanguages`包含 「美」,因爲iOS的9
- 2. 的iOS 9:edgesForExtendedLayout
- 3. [NSLocale preferredLanguages]返回空嗎?
- 4. [NSLocale preferredLanguages]如何工作?
- 5. 爲什麼Xcode 6.1在IOS 8模擬器中死亡[NSLocale preferredLanguages]
- 6. ios 9 + Xcode 7
- 7. 在iOS 9
- 8. iOS 9 UIInputViewController dismissKeyboard
- 9. iOS中8和iOS 9
- 10. 的iOS 9故障的UILabel
- 11. iOS 9 Compatiblity問題
- 12. iOS 9 Swift 2.0 UITextFieldDidChange
- 13. iOS 9/10 NavigationController Difference
- 14. UITabBarItem - 在iOS版9
- 15. KeychainTouchID iOS 8和9
- 16. iOS 9 - 「domainIdentifier」for CSSearchableItem
- 17. ReloadSections崩潰:iOS 9
- 18. 如何在IOS 9
- 19. 轉換MPMediaItemArtwork從iOS的10到iOS 9
- 20. iOS應用轟然的iOS 9
- 21. 的iOS 9 - NSAllowsArbitraryLoads範圍
- 22. 的iOS 9 supportedInterfaceOrientations不工作
- 23. 設置碰撞的iOS 9
- 24. ios 9中的Spotlight擴展
- 25. iOS 9的黑色屏幕
- 26. IOS 9 - 調用的cellForRowAtIndexPath時
- 27. 的Facebook SDK 4.5 IOS 9
- 28. iOS之前的Xamarin UIStackView 9
- 29. iOS 9在iOS 9中旋轉後,UINavigation欄內容不居中?
它的作品!非常感謝 – Mansour
請小心使用此解決方案,因爲它可能無法正常工作。 zh-Hans-US將導致zh,而語言是zh-Hans。最後一次出現「 - 」時切斷。 – endowzoner