iOS程序内语言切换使用小结
创始人
2024-02-07 15:49:45
0

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

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

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

 

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

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

自己随意命名,后缀是.strings,一定要记得Targets要勾选项目

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

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

 

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

 

 

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

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

中文:

"change_language" = "悄悄是别离的笙箫,沉默是今晚的康桥";
"button" = "切换语言";
英文:
"change_language" = "Quietness is my farewell music, silence is Cambridge tonight";
"button" = "Change Language";

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

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    

    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-Hant";

            }else currLanguage = @"en";

        

            [def setValue:currLanguage forKey:@"LocalLanguageKey"];

            [def synchronize];

        }

    

    

    //废弃按钮

    UIButton *btnAbandoned=[UIButton buttonWithType:UIButtonTypeCustom];

    btnAbandoned.frame=CGRectMake(100, 100, 100, 45);

    [btnAbandoned  setBackgroundColor:[UIColor orangeColor]];

    [btnAbandoned addTarget:self action:@selector(btnAbandonedClick:) forControlEvents:UIControlEventTouchDown];

    [btnAbandoned setTitle:@"点击" forState:UIControlStateNormal];

    [btnAbandoned setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

    [btnAbandoned.titleLabel setFont:[UIFont systemFontOfSize:16]];

    [self.view addSubview:btnAbandoned];

    

}

- (void)btnAbandonedClick:(UIButton*)sender{

    //修改语言

        NSString *language = [[NSUserDefaults standardUserDefaults] objectForKey:@"LocalLanguageKey"];

        if ([language isEqualToString:@"en"]) {

        [[NSUserDefaults standardUserDefaults] setValue:@"zh-Hant" forKey:@"LocalLanguageKey"];

        }else{

                [[NSUserDefaults standardUserDefaults] setValue:@"en" forKey:@"LocalLanguageKey"];

        }

    

    NSString *path = [[NSBundle mainBundle] pathForResource:[[NSUserDefaults standardUserDefaults] objectForKey:@"LocalLanguageKey"] ofType:@"lproj"];

    

    NSBundle* bundle = [NSBundle bundleWithPath:path];

    //此处是上面赋值的bundle

    NSString *str = [bundle localizedStringForKey:@"change_language" value:nil table:@"MultiLanguage"];

    NSString *buttonStr = [bundle localizedStringForKey:@"button" value:nil table:@"MultiLanguage"];

    NSLog(@"wenzi:%@,%@",str,buttonStr);

    

}

相关内容

热门资讯

《论语》心得体会 《论语》心得体会(精选22篇)  当我们经过反思,有了新的启发时,往往会写一篇心得体会,它可以帮助我...
暑期实践心得体会 暑期实践心得体会范文500字(精选11篇)  从某件事情上得到收获以后,不如来好好地做个总结,写一篇...
志愿者服务心得体会 志愿者服务心得体会(精选5篇)  我们心里有一些收获后,应该马上记录下来,写一篇心得体会,这样我们可...
我的一点心得 我的一点心得最近在论坛上看到关于虚拟业务的新规则,也经常碰到做此类业务的朋友们,还有关于对相关软件的...
借来的三年SEO心得体会 借来的三年SEO心得体会下面和大家分享一些经验,经验总共分为四段来分享,前序工作、站内、站外、后续工...
捕捉孩子的敏感期读书心得 捕捉孩子的敏感期读书心得  我认真读过《捕捉孩子的敏感期》之后才发现,很多时候我们对幼儿的生活并不是...
大学生团课学习心得体会感悟 大学生团课学习心得体会感悟做什么,并且规划它们,然后全力以赴地去完成。想想今天世界上最成功的那些人,...
大学生实习心得体会及收获 大学生实习心得体会及收获(通用12篇)  当在某些事情上我们有很深的体会时,不妨将其写成一篇心得体会...
三个离不开的心得体会 三个离不开的心得体会  心中有不少心得体会时,常常可以将它们写成一篇心得体会,这样可以记录我们的思想...
高中生活的心得体会 高中生活的心得体会(精选31篇)  当在某些事情上我们有很深的体会时,不妨将其写成一篇心得体会,让自...
行风建设心得体会 行风建设心得体会   通过学习有关行风建设文件及相关教师法律法规,在同志们的帮忙下,我认真对照自己平...
第37个教师节心得体会 第37个教师节心得体会(精选13篇)  当在某些事情上我们有很深的体会时,应该马上记录下来,写一篇心...
教学观摩心得体会 教学观摩心得体会(精选5篇)  我们从一些事情上得到感悟后,往往会写一篇心得体会,这样能够给人努力向...
校园暴力讲座心得体会 关于校园暴力讲座心得体会(通用12篇)  我们得到了一些心得体会以后,可用写心得体会的方式将其记录下...
参加主持人大赛心得体会 参加主持人大赛心得体会  有了一些收获以后,应该马上记录下来,写一篇心得体会,这样有利于培养我们思考...
高中军训心得体会优秀 高中军训心得体会(优秀)  一遍又一遍枯燥乏味的动作,一句又一句不得违抗的命令,一套又一套令人生畏的...
新时代楷模黄大年的心得 新时代楷模黄大年的心得(通用5篇)  当在某些事情上我们有很深的体会时,往往会写一篇心得体会,通过写...
榜样的心得体会 榜样的心得体会  什么是心得体会  心得体会是指一种读书、实践后所写的感受性文字。语言类读书心得同数...
讲师培训心得 讲师培训心得讲师培训心得1  以前总听身边的同事说讲师培训就是一次魔鬼训练,上课有很大的压力,而且压...
学生会的心得体会 学生会的心得体会(精选40篇)  有了一些收获以后,可以寻思将其写进心得体会中,这样就可以通过不断总...