美文网首页iOS日常
iOS应用内语言切换&程序实现国际化localizabl

iOS应用内语言切换&程序实现国际化localizabl

作者: 诗仙丶李白 | 来源:发表于2016-12-16 18:09 被阅读705次

    1、demo代码和iOS应用内语言切换后期补上(2016.12.15)

    2、demo代码已加上,因重新写的demo所以会跟截图不一样(2016.12.19)

    程序实现国际化

    根据手机使用语言加载对应的语言:

    1、创建.strings文件,系统默认加载Localizable.strings:

    2、设置多语言,这边设置了中文、英文:

    3、.strings文件添加语言,点击Localizable.strings右侧勾选:

    4、在各自的响应文件中,按照"key" = "value"的格式配置:

    Localizable.strings( Chinese(Simplified) )中,对中文进行适配

    "登录"="登录";

    Localizable.strings( English )中,对英文进行适配

    "登录"="Login";

    5、使用:

    系统提供的调用方法,一般只使用到前面2个下面进行说明

    #define NSLocalizedString(key, comment) \

    [NSBundle.mainBundle localizedStringForKey:(key) value:@"" table:nil]

    #define NSLocalizedStringFromTable(key, tbl, comment) \

    [NSBundle.mainBundle localizedStringForKey:(key) value:@"" table:(tbl)]

    #define NSLocalizedStringFromTableInBundle(key, tbl, bundle, comment) \

    [bundle localizedStringForKey:(key) value:@"" table:(tbl)]

    #define NSLocalizedStringWithDefaultValue(key, tbl, bundle, val, comment) \

    [bundle localizedStringForKey:(key) value:(val) table:(tbl)]

    //默认调用Localizable.strings

    self.title = NSLocalizedString(@"登录",@“这是注释无影响可填写nil”);

    //调用自定义myName.strings

    self.title = NSLocalizedStringFromTable(@"登录",@"myName",@“这是注释无影响可填写nil”);

    设置模拟器语言,Product->Scheme->Edit Scheme...

    图片、xib、storyboard同理设置(不同语言图片切换可使用NSBundle)

    改变手机语言效果展示:


    iOS应用内语言切换

    重点:通过刷新界面或者重新设置rootViewController

    通过更改bundle来获取不同语言,下面是主要代码

    NSString *tmp = [[NSUserDefaults standardUserDefaults]objectForKey:languageKey];

    if (tmp.length == 0 || tmp == nil) {

    tmp = @"zh-Hans";//默认中文

    }

    NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle mainBundle]pathForResource:tmp ofType:@"lproj"]];

    if (bundle)

    {

    return NSLocalizedStringFromTableInBundle(key, table, bundle, @"");

    }

    点击按钮切换显示效果如下:

    demo下载

    相关文章

      网友评论

      • 沙漠骑士:大神,问一下,假如我要现实英文和越南语两种语言(应用内点击可以实时切换),是不是我写好了英文版的,还需要找对应的越语版还是自动生成(我连续操作了几次都是生成一样的英文版的)
      • 大王叫我来巡山丨:大神 sample该图片在中文跟英文下,您是怎么设置的
        诗仙丶李白: 手机语言切换:sample.png设置Localization属性:sample2.png(English)、sample.png(Simplified)。其实已经是2张图片了。
        应用内切换:其实是2个NSBundle中的2套图片。

      本文标题:iOS应用内语言切换&程序实现国际化localizabl

      本文链接:https://www.haomeiwen.com/subject/uynnmttx.html