[iOS]怎么在iOS开发中切换显示语言实现国际化
Posted ShineYangGod
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[iOS]怎么在iOS开发中切换显示语言实现国际化相关的知识,希望对你有一定的参考价值。
www.MyException.Cn 网友分享于:2014-07-17 浏览:0次 [ios]如何在iOS开发中切换显示语言实现国际化1.在Project设置,添加中英两种语言:
2.新建Localizable.strings文件,作为多语言对应的词典,存储多种语言,点击右侧Localization,勾选中英:
3.添加一个字段,
在English中,添加:"SUBMIT_BTN_TITLE" = "Go";
在Chinese中,添加:"SUBMIT_BTN_TITLE" = "开始";
//
// 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]怎么在iOS开发中切换显示语言实现国际化的主要内容,如果未能解决你的问题,请参考以下文章