1. 在 Project 设置,加入中英两种语言:
2. 新建 Localizable.strings 文件,作为多语言相应的词典,存储多种语言,点击右側 Localization,勾选中英:
3. 加入一个字段,
在 English 中,加入:"SUBMIT_BTN_TITLE" = "Go";
在 Chinese 中,加入:"SUBMIT_BTN_TITLE" = "開始";
4. 一个工具类 GDLocalizableController。用来切换本地语言:
- //
- // 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
5. 自己定义一个宏方便处理:
- // ----- 多语言设置
- #define CHINESE @"zh-Hans"
- #define ENGLISH @"en"
- #define GDLocalizedString(key) [[GDLocalizableController bundle] localizedStringForKey:(key) value:@"" table:nil]
6. 使用:
- [GDLocalizableController setUserlanguage:CHINESE];
- NSLog(GDLocalizedString(@"SUBMIT_BTN_TITLE"));
- [GDLocalizableController setUserlanguage:ENGLISH];
- NSLog(GDLocalizedString(@"SUBMIT_BTN_TITLE"));
參考资料:iOS 应用程序内部国际化,不尾随系统语言
来源: http://www.bubuko.com/infodetail-2091675.html