公司项目之前默认语言为中文,也没有实现自由切换语言功能,而是随系统语言变化而变化,而后领导说让把默认语言改为英文(在系统语言非中文情况下都显示英文),实现后记录一下。由于项目中使用了OC及Swift,而Swift无法调用#define中的代码,所以分为两段代码。

  • OC
#define CJLocalizedString(Context)  [NSString stringWithFormat:@"%@", [[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"]] ofType:@"lproj"]] localizedStringForKey:(Context) value:nil table:nil]]
  • Swift
func getLocalizedString(str: String) -> String {
    let def = UserDefaults.standard
    let al = def.object(forKey: "appLanguage")
    let bundle = Bundle(path: Bundle.main.path(forResource: al as? String, ofType: "lproj")!)
    return (bundle?.localizedString(forKey: str, value: nil, table: nil))!
}

使用时直接调用赋值即可