作者atst2 (atst2)
看板MacDev
标题Re: [问题] 语系强制设定
时间Tue Jan 28 18:08:14 2014
※ 引述《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模拟器上测试过.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.169.197.144
※ 编辑: atst2 来自: 118.169.197.144 (01/28 18:11)
1F:推 howdiun:实用推 01/29 09:11
2F:→ Teferi:感谢解答 虽然最後是直接硬拆了 有时间再来试试 02/05 04:54