iOS 多語言選擇

2021-09-01 02:48:22 字數 2680 閱讀 2232

多語言選擇,預設跟隨系統語言,選擇的時候發出通知更改控制器頁面

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...