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