1. In project settings, add Chinese and English to two languages:
2. New Localizable.strings file, as a multilingual dictionary, store multiple languages, click on the right localization, check the English:
3. Add a field,
In 中文版, add: Submit_btn_title = Go;
In Chinese, add: submit_btn_title = start;
4. A tool class Gdlocalizablecontroller, used to switch local languages:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 666768697071727374757677787980818283 |
//
// GDLocalizableController.h
// guide-book
//
// Created by why on 7/16/14.
// Copyright (c) 2014 why. All rights reserved.
//
#
import <foundation foundation.h=
""
>
@interface GDLocalizableController : NSObject
+(NSBundle *)bundle;
//获取当前资源文件
+(
void
)initUserLanguage;
//初始化语言文件
+(NSString *)userLanguage;
//获取应用当前语言
+(
void
)setUserlanguage:(NSString *)language;
//设置当前语言
@end
//
// GDLocalizableController.m
// guide-book
//
// Created by why on 7/16/14.
// Copyright (c) 2014 why. All rights reserved.
//
#
import GDLocalizableController.h
@implementation GDLocalizableController
static NSBundle *bundle = nil;
+ ( NSBundle * )bundle{
return bundle;
}
+(
void
)initUserLanguage{
NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
NSString *string = [def valueForKey:
@userLanguage
];
if
(string.length ==
0
){
//获取系统当前语言版本
NSArray* languages = [def objectForKey:
@AppleLanguages
];
NSString *current = [languages objectAtIndex:
0
];
string = current;
[def setValue:current forKey:
@userLanguage
];
[def synchronize];
//持久化,不加的话不会保存
}
//获取文件路径
NSString *path = [[NSBundle mainBundle] pathForResource:string ofType:
@lproj
];
bundle = [NSBundle bundleWithPath:path];
//生成bundle
}
+(NSString *)userLanguage{
NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
NSString *language = [def valueForKey:
@userLanguage
];
return language;
}
+(
void
)setUserlanguage:(NSString *)language{
NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
//1.第一步改变bundle的值
NSString *path = [[NSBundle mainBundle] pathForResource:language ofType:
@lproj ];
bundle = [NSBundle bundleWithPath:path];
//2.持久化
[def setValue:language forKey:
@userLanguage
];
[def synchronize];
}
@end
</foundation>
|
5. Customize a macro for easy handling:
1234 |
// ----- 多语言设置 #define CHINESE @zh -Hans #define ENGLISH @en #define GDLocalizedString(key) [[GDLocalizableController bundle] localizedStringForKey:(key) value:@ table:nil] |
6. Use:
1234 |
[GDLocalizableController setUserlanguage:CHINESE]; NSLog(GDLocalizedString( @SUBMIT_BTN_TITLE )); [GDLocalizableController setUserlanguage:ENGLISH]; NSLog(GDLocalizedString( @SUBMIT_BTN_TITLE ));
|
Internationalization of the switch display language in IOS development Xcode