美文网首页
iOS 本地化 国际化

iOS 本地化 国际化

作者: 马上就来 | 来源:发表于2018-03-13 10:35 被阅读12次

    配置需要国际化的语言(国际化的准备工作)
    App名称本地化
    代码中字符串本地化
    多人开发情况下的字符串本地化
    图片本地化(两种方式两种方式)
    查看/切换本地语言
    storyboard/xib本地化

    配置需要国际化的语言 必要的一步


    image.png

    (一)应用名称本地化/国际化


    image.png

    文件名字命名为InfoPlist,且必须是这个名字(因每个人电脑设置差异,此处本人电脑没有显示strings后缀名):
    (1)在InfoPlist.strings(english)中加入如下代码:

    // Localizable App Name是App在英语环境环境下显示的名称
    CFBundleDisplayName = "Localizable App Name";


    image.png

    (二)代码中字符串的本地化
    文件名必须命名为Localizable

    image.png

    define NSLocalizedString(key, comment) [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]

    (三)多人开发情况下的字符串本地化
    项目开发中,独立开发的还是少数。经常会有多人开发的情况,这种情况,如果多人同时操作本地化文件,极有可能会存在冲突。另一方面,我们又不希望自己的本地化文件受到对方的污染,也就是说,我们不希望对方操作我们的本地化文件。但是上面介绍的代码中字符串的本地化是使用的是默认的文件名"Localizable",因为启动程序时,系统将根据语言加载相应的文件得到其对应的字符串文件,这个字符串可以通过系统将NSLocalizedString中的宏生成名为“Localizable.strings”的文件。那么如何让系统加载我们自己命名的本地化文件而非系统默认的Localizable.strings呢?这就是 NSLocalizedStringFromTable(<#key#>, <#tbl#>, <#comment#>)的用处。
    也就是说,如果你的strings文件名字不是Localizable而是自定义的话,如VVS.strings,那么你就得使用NSLocalizedStringFromTable这个宏来读取本地化字符串。

    // key:系统根据key取字符串
    // tbl:自定义strings文件的名字
    // comment:可以不传
    NSLocalizedStringFromTable(<#key#>, <#tbl#>, <#comment#>)

    (四)图片本地化
    本地化图片,有两种方式,第一种方式和本地化代码中的字符串一样,通过NSLocalizedString(key,comment)来获取相应的字符串,然后根据这个字符串再获取图片。

    image.png image.png

    (五)查看/切换本地语言
    NSArray *languages = [[NSUserDefaults standardUserDefaults] valueForKey:@"AppleLanguages"];
    NSString *currentLanguage = languages.firstObject;
    NSLog(@"模拟器当前语言:%@",currentLanguage);
    }

    相关文章

      网友评论

          本文标题:iOS 本地化 国际化

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