Re: [問題] 語系強制設定

作者: atst2 (atst2)   2014-01-28 18:08:14
※ 引述《Teferi (太費力)》之銘言:
: 小弟接到個APP的維護,本來有分中英文語系
: 但業主要求要把中英文分開成中文跟英文兩個版本上架(語系切換時不可變)
: 爲了以後維護方便,一直在網上找是否有強制設定成某語系的方法
: 只找到跟NSUserDefaults的"AppleLanguages" Key有關
: 但是試了很多方法都沒能達到上述效果
: 不知道有沒有前輩知道方向,可以指點小弟一下
: p.s之前也有想試過取消多語系設定,
: 但是取消多語系後
: 又變成英文版本的編譯時會找不到很多XIB檔(當初有多語系的部分)
雖然有段時間了...不過還是提供一下作法:
// NSUserDefaults+SetupLanguages.h
@interface NSUserDefaults (SetupLanguages)
- (void)setAppLanguage:(NSString *)lan;
@end
// NSUserDefaults+SetupLanguages.m
#import "NSUserDefaults+SetupLanguages.h"
NSString * const keyLanguages = @"AppleLanguages";
@implementation NSUserDefaults (SetupLanguages)
- (void)setAppLanguage:(NSString *)lan
{
NSMutableArray* langs = [NSMutableArray arrayWithArray:
[self valueForKey:keyLanguages]];
NSUInteger index = [langs indexOfObject:lan];
if(NSNotFound != index) {
[langs removeObjectAtIndex:index];
[langs insertObject:lan atIndex:0];
[self setValue:[langs copy] forKey:keyLanguages];
[self synchronize];
}
}
@end
直接改寫main.m如下:
#import <UIKit/UIKit.h>
#import "LocalizationNibAppDelegate.h"
#import "NSUserDefaults+SetupLanguages.h"
int main(int argc, char *argv[])
{
int retVal = 0;
@autoreleasepool {
[[NSUserDefaults standardUserDefaults]
setAppLanguage:@"指定的語系"];
retVal = UIApplicationMain(argc,
argv,
nil,
NSStringFromClass([LocalizationNibAppDelegate class]));
}
return retVal;
}
你不成功的原因,可能在於改寫AppleLanguages的時間太晚了, Resource都已經載入了
以上程式已在ios 7模擬器上測試過.
作者: howdiun (Howdiun)   2014-01-29 09:11:00
實用推
作者: Teferi (太費力)   2014-02-05 04:54:00
感謝解答 雖然最後是直接硬拆了 有時間再來試試

Links booklink

Contact Us: admin [ a t ] ucptt.com