多語言選擇,預設跟隨系統語言,選擇的時候發出通知更改控制器頁面
stringshelper.h檔案
//定義取字串巨集給外界呼叫
#define stringshelpergetstringwithkeyfromtable(key,tb) [[stringshelper shareinstance] getstringwithkey:key table:tb]
#define languagehadchanged @"languagehadchanged"
typedef ns_enum(nsuinteger,language);
@inte***ce stringshelper : nsobject
/** 單例
@return 例項
*/+ (instancetype)shareinstance;
//通過列舉值獲取string
- (nsstring*)getstringwithlanguage:(language)language;
//獲取bundle
-(nsbundle *)getbundlewithlanguage:(language)language;
/** 根據key和table獲取文字
@param key key
@param table table(實際上是對應的strings的檔名)
@return 文字
*/- (nsstring *)getstringwithkey:(nsstring *)key table:(nsstring*)table;
/**
@param language 待切換的語言
*/- (void)changelanguage:(language)language;
stringshelper.m檔案
#import "stringshelper.h"
#define currentlanguage @"currentlanguage"
@inte***ce stringshelper()
@property (nonatomic,strong) nsbundle *currentbundle; ///《當前檔案包
@property (nonatomic,assign) language currentlanguage; ///《當前語言
@end
@implementation stringshelper
/** 單例
@return 例項
*/+ (instancetype)shareinstance);
return instance;
}//初始化方法
- (instancetype)init
return self;
}//初始化語言,預設是系統預設排序
-(void)initlanguage
else if ([language hasprefix:@"en"])
else if ([language hasprefix:@"ja"])
else
//儲存當前語言
[[nsuserdefaults standarduserdefaults]setvalue:@(lan) forkey:currentlanguage];
//重新獲取一下
number = [[nsuserdefaults standarduserdefaults] valueforkey:currentlanguage];
}self.currentlanguage = [number integervalue]; ///《預設
[self setupcurrentbundle:self.currentlanguage];
}//獲取bundle
-(nsbundle *)getbundlewithlanguage:(language)language
//獲取當前的語言所在路徑並且獲取bundle
- (void)setupcurrentbundle:(language)language
//通過列舉值獲取string
- (nsstring*)getstringwithlanguage:(language)language
}/**
在當前的bundle下,根據key和table獲取文字
@param key key
@param table table(實際上是對應的strings的檔名)
@return 文字
*/- (nsstring *)getstringwithkey:(nsstring *)key table:(nsstring*)table
else
}/**
@param language 待切換的語言
*/- (void)changelanguage:(language)language
self.currentlanguage = language;
//改變當前的bundle
[self setupcurrentbundle:language];
[[nsnotificationcenter defaultcenter] postnotificationname:languagehadchanged object:self userinfo:nil];
}
iOS 多語言化
ios開發中,實現多語言化。首先建立乙個string file的檔案,可以命名localization.strings.然後在這兒新增你程式希望實現的多語言。點localizations 下的 號即可新增,這裡我新增了english和簡體中文 新增之後,回到你的工程目錄下,會發現剛建立的locali...
iOS支援多語言
找到info localizations 選擇需要新增的語言 新建strings檔案,名字為localizable 3.為localizable.strings新增不同的支援語言 4.在string檔案中設定不同的key值對應在不同語言下應該顯示的字元 5.使用示範 uilabel lb uilab...
ios多語言切換
軟體需要適配多語言,通常想到的第乙個方法就是切換多語言的時候傳送通知到各個頁面,從而實現多語言的切換,其實這個方法太不好了,通知多,影響大,有的乾脆直接重啟軟體來切換多語言,其實這幾種都是不可取的,現在作者提供乙個簡單的方法僅供參考 1理論準備 現在大部分軟體頁面的控制器都是tabbar和narba...