app应用内中英文切换

时间:2024-05-19 15:27:12

随着时代的发展,应用程序相继出现了不同语言的版本方案,中文,英文,法文,韩文等等;想在应用程序中实现语言的*切换,需要配置多个语言的文件,根据用户的动态选择获取不同语言文件下的语言文件,从而显示到界面上面。这里先说中英文的切换,至于其他语言操作复制即可!!!

1.新建工程之类的就不用说了,配置项目本地化支持简体中文和英文

      工程-PROJECT-info->Localizations,点“+”,选择(Chinese(Simplified))添加简体中文,英文Xcode自带有(English),所以不需要再次添加。(点击添加弹出语言菜单,即可选择你所需要的语言)

app应用内中英文切换

2.现在可以添加多语言文件了。

   注意:需要手动切换语言,而不是根据系统语言变换,所以命名不能与系统语言文件同名,即Localizable.strings;

自己随意命名,后缀是.strings,一定要记得Targets要勾选项目app应用内中英文切换

3.配置English.strings本地化,现在支持中文和英文。

  (1)选中English.strings文件,查看右边栏中的信息;(2)点击Localization中的按钮,弹出框中显示出前面添加的语言;(3)选择中文和英文,base选项可有可无,

app应用内中英文切换app应用内中英文切换

勾选之后,English.strings中多出了两个文件

app应用内中英文切换

完成之后便是完成了项目内多语言环境的配置,下面看一下这两个文件中应该怎样写

4.文件中添加需要的字符串

中文:

"AirLeak" = "漏气";

"AppUseDes" = "APP使用说明";

"AutoBind" = "自动绑定";

"AutoBindNewDevice" = "自动绑定";

"BackToDefaultSet" = "恢复默认设置";

"BatteryAlertDown" = "电量警报下限";

"BindNewDevice" = "绑定新设备";

"BleOpen" = "蓝牙开启";

"Cancel" = "取消";

"DeviceHasBeenBD" = "设备已经被绑定";

"DeviceInstallDes" = "设备安装说明";

"Ensure" = "确定";

"FindNewDevice" = "发现新版本";

"HighTempreture" = "温度过高";

"Help" = "帮助";

"HighPressure" = "气压过高";

"Home" = "首页";

"InputRightCode" = "请输入正确的编号";

"InputWheelCode" = "请输入轮胎编码\n(0-9a-fA-F组成)";

"LowBattery" = "电量低";

"LowPressure" = "气压低";

"ManualBindNewDevice" = "手动绑定";

"ManualBind" = "手动绑定";

"PleaseBindDevice" = "请绑定设备";

"PleaseOpenBle" = "请打开蓝牙";

"PressureAlertDown" = "压力警告下限";

"PressureAlertUpper" = "压力警告上限";

"PressureUnint" = "压力单位";

"Searching" = "搜索中";

"SharkAlert" = "震动报警";

"SystemSet" = "系统设置";

"TempretureAlertUpper" = "温度警告上限";

"TempretureUnint" = "温度单位";


"LeftUpWheel" = "左前轮胎";

"RightUpWheel" = "右前轮胎";

"LeftDownWheel" = "左后轮胎";

"RightDownWheel" = "右后轮胎";

"RotationType" = "调胎";


"ScanAndScan" = "扫一扫";//扫一扫

"AlbumLab" = "相册";

"ChooseQRCodePic" = "请选择二维码图片";

"ChooseSure" = "确认";

"ScanCodeSuccess" = "扫码绑定成功";//扫码绑定成功

"ScanRepeat" = "请重新扫描";//请重新扫描

"ScanBind" = "扫码绑定";//扫码绑定


英文:


"AirLeak" = "Air leak";

"AppUseDes" = "app use manual";

"AutoBind" = "Auto bind";

"AutoBindNewDevice" = "Auto bind";

"BackToDefaultSet" = "Restore default setting";

"BatteryAlertDown" = "Minimum alert battery";

"BindNewDevice" = "Bind new sensor";

"BleOpen" = "Ble enabled";

"Cancel" = "Cancel";

"DeviceHasBeenBD" = "Device has been bound";

"DeviceInstallDes" = "device install instructions";

"Ensure" = "Ok";

"FindNewDevice" = "New version";

"HighTempreture" = "High temperature";

"Help" = "Help";

"HighPressure" = "High pressure";

"Home" = "Home";

"InputRightCode" = "Input correct code";

"InputWheelCode" = "Input wheel code";

"LowBattery" = "Low battery ";

"LowPressure" = "Low pressure";

"ManualBindNewDevice" = "Manual bind";

"ManualBind" = "manual bind";

"PleaseBindDevice" = "Please bind sensor";

"PleaseOpenBle" = "Enable ble";

"PressureAlertDown" = "Minimum alert pressure";

"PressureAlertUpper" = "Maximum alert pressure";

"PressureUnint" = "Pressure unit ";

"Searching" = "Searching";

"SharkAlert" = "Vibration alert";

"SystemSet" = "System setting";

"TempretureAlertUpper" = "Maximum alert temperature";

"TempretureUnint" = "Temperature unit";


"LeftUpWheel" = "Left up wheal";

"RightUpWheel" = "Right up wheal";

"LeftDownWheel" = "Left down Wheal";

"RightDownWheel" = "Right down wheal";

"RotationType" = "Tyre rotation";


"ScanAndScan" = "Scan";//扫一扫

"AlbumLab" = "Album";

"ChooseQRCodePic" = "Please choose a pic of QRCode";

"ChooseSure" = "sure";

"ScanCodeSuccess" = "Scan success";//扫码绑定成功

"ScanRepeat" = "Scan repeat";//请重新扫描

"ScanBind" = "Scan bind";//扫码绑定




5.配置环境已经完成,现在看看代码怎么写????

(1)新创建工具类,继承自NSObject(在这里我命名为ChangeLanguage)

(2)ChangeLanguage.h

+(NSBundle *)bundle;//获取当前资源文件

+(void)initUserLanguage;//初始化语言文件

+(NSString *)userLanguage;//获取应用当前语言

+(void)setUserlanguage:(NSString *)language;//设置当前语言


ChangeLanguage.m




















































































































static NSBundle *bundle = nil;

+ ( NSBundle * )bundle{

    

   return bundle;

}


//首次加载的时候先检测语言是否存在

+(void)initUserLanguage{

    

    NSUserDefaults *def = [NSUserDefaults standardUserDefaults];

    

    NSString *currLanguage = [def valueForKey:LocalLanguageKey];

    

    if(!currLanguage){

        NSArray *preferredLanguages = [NSLocale preferredLanguages];

        currLanguage = preferredLanguages[0];

        if ([currLanguage hasPrefix:@"en"]) {

            currLanguage = @"en";

        }else if ([currLanguage hasPrefix:@"zh"]) {

            currLanguage = @"zh-Hans";

        }else currLanguage = @"en";

        [def setValue:currLanguage forKey:LocalLanguageKey];

        [def synchronize];

    }

    

    //获取文件路径

    NSString *path = [[NSBundle mainBundlepathForResource:currLanguage ofType:@"lproj"];

    bundle = [NSBundle bundleWithPath:path];//生成bundle

}


//获取当前语言

+(NSString *)userLanguage{

    

    NSUserDefaults *def = [NSUserDefaults standardUserDefaults];

    

    NSString *language = [def valueForKey:LocalLanguageKey];

    

    return language;

}

//设置语言

+(void)setUserlanguage:(NSString *)language{

    

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

    NSString *currLanguage = [userDefaults valueForKey:LocalLanguageKey];

    if ([currLanguage isEqualToString:language]) {

        return;

    }

    [userDefaults setValue:language forKey:LocalLanguageKey];

    [userDefaults synchronize];

 

    NSString *path = [[NSBundle mainBundlepathForResource:language ofType:@"lproj" ];

    bundle = [NSBundle bundleWithPath:path];

}