iOS - Localizable 国际化

1、国际化

  • 开发的移动应用更希望获取更多用户,走向世界,这就需要应用国际化,国际化其实就是多语言,系统会根据当前设备的语言环境来识别 App 中使用中文还是英文。

2、应用内容国际化

  • 1、新建一个名为 Localizable.strings 的资源文件。

    Localizable1

    Localizable2

  • 2、点击 Localizable.strings 文件,在右侧属性选择器中可以看到有个按钮 Localize...。

    Localizable3

  • 3、点击 Localize... 按钮,如果没做过国际化处理,选项只有 Base 和 English,选择 English 点击 Localize 按钮。

    Localizable4

    Localizable5

  • 4、点击工程根目录,并选择 PROJECT,然后选择 Info 选项卡,底部我们就看到了Localizations,点击 “+” 号选择一门语言(比如 Chinese(Simplified))。这时看 Localizable.strings 文件下有两个文件 Localizable.strings(English) 和 Localizable.strings(Chinese(Simplified))。

    Localizable6

    Localizable7

    Localizable8

2.1 代码国际化

  • 在国际化文件中以键值的方式定义需要国际化的字符串。

        "代码中使用的字符串" = "想要显示的字符串";
  • 5、在 Localizable.strings(English) 文件中添加需要国际化的字符串的英文名称。

        "language" = "english";
        "button" = "button";

    Localizable10

  • 6、在 Localizable.strings(Chinese(Simplified)) 文件中添加需要国际化的字符串的中文名称。

        "language" = "中文";
        "button" = "按钮";

    Localizable11

  • 7、在需要使用国际化的地方使用 NSLocalizedString(key, comment) 调用名为 Localizable.strings 的文件中定义的 Key 值。系统会根据当前设备的语言环境来识别使用中文还是英文。

        NSLog(@"%@\n\n", NSLocalizedString(@"language", nil));
        NSLog(@"%@", NSLocalizedString(@"button", nil));

    Localizable12

    Localizable13

    Localizable14

    • 如果你的 strings 文件名字不是 Localizable 而是自定义的话,如 qian.strings,那么你就得使用 NSLocalizedStringFromTable() 来读取本地化字符串。

          NSLocalizedStringFromTable(@"language", @"qian", nil)

2.2 Storyboard/Xib 国际化 1

  • 5、在 Storyboard 文件的 Localization 选项中选择 English 和 Chinese(Simplified),并选择 Interface Builder Storyboard 模式,去掉 Base。此时可看到 Main.storyboard 下有两个文件 Main.storyboard(Chinese(Simplified)) 和 Main.storyboard(English)。

    Localizable9

  • 6、在 Main.storyboard(Chinese(Simplified)) 文件中设置 Storyboard 上控件的中文名称。

    Localizable16

  • 7、在 Main.storyboard(English) 文件中设置 Storyboard 上控件的英文名称。

    Localizable15

  • 8、运行程序,系统会根据当前设备的语言环境来识别使用中文还是英文。注意使用这种方式设置完国际化后,在 Storyboard 新添加的控件不会出现在国际化文件中,建议最后进行国际化设置。

2.3 Storyboard/Xib 国际化 2

  • 5、在 Storyboard 文件的 Localization 选项中添加 English 和 Chinese(Simplified),并选择 Localizable Strings 模式。此时可看到 Main.storyboard 下有三个文件 Main.storyboard(Base)、Main.strings(Chinese(Simplified)) 和 Main.strings(English)。

    Localizable17

  • 6、在 Main.strings(Chinese(Simplified)) 文件中设置 Storyboard 上控件的中文名称。

    Localizable18

  • 7、在 Main.strings(English) 文件中设置 Storyboard 上控件的英文名称。

    Localizable19

  • 8、运行程序,系统会根据当前设备的语言环境来识别使用中文还是英文。注意使用这种方式设置完国际化后,在 Storyboard 新添加的控件不会出现在国际化文件中,建议最后进行国际化设置。

3、应用名国际化

  • 1、新建一个名为 InfoPlist.strings 的资源文件。

    Localizable1

    Localizable20

  • 2、点击 InfoPlist.strings 文件,在右侧属性选择器中可以看到有个按钮 Localize...。

    Localizable21

  • 3、点击 Localize... 按钮,如果没做过国际化处理,选项只有 Base 和 English,选择 English 点击 Localize 按钮,再像上面一样添加上其他语言。如果做过国际化,再选中 Chinese(Simplified) 语言。

    Localizable4

    Localizable22

  • 4、在 InfoPlist.strings(English) 文件中添加应用的英文名称。

        CFBundleDisplayName = "App Name";

    Localizable23

  • 5、在 InfoPlist.strings(Chinese(Simplified)) 文件中添加应用的中文名称。

        CFBundleDisplayName = "App 名称";

    Localizable24

  • 6、运行程序,系统会根据当前设备的语言环境来识别使用中文还是英文。

4、图片国际化

  • 这里又分两种方法,第一种和国际化字符串方法类似,把中英文图片的名字分别存到中英文对应的 strings 文件,然后通过 NSLocalizedString 来获取图片名称。

    • 1、Localizable.strings(english) 文件中加入:

          "BtnCancel" = "BtnCancelEn.png";
    • 2、Localizable.strings(chinese) 文件中加入:

          "BtnCancel" = "BtnCancelCn.png";
    • 3、然后在代码中使用 NSLocalizedString 来获取图片名称:

          UIImage *images = [UIImage imageNamed:NSLocalizedString(@"BtnCancel", nil)]
  • 第二种就比较正规化了。

    • 1、将图片文件拖到项目中(不要放到 Assets.xcassets 中),点中你要国际化的图片,如 “icon.png”,在右侧属性选择器中可以看到有个按钮 Localize...。

      Localizable25

    • 2、点击 Localize... 按钮,如果没做过国际化处理,选项只有 Base 和 English,选择 English 点击 Localize 按钮,再像上面一样添加上其他语言。如果做过国际化,再选中 Chinese(Simplified) 语言。

      Localizable26

    • 3、在图片左边就会出现一个倒三角,点开就会出现(english)和(chinese)的 2 张图,并且在项目文件夹中会出现 en.lproj 文件和 zh-Hans.lproj 文件;en.lproj 文件存放的是英文版图片,zh-Hans.lproj 存放的是中文版图片,中英文图片名字一样,我们在文件夹中直接替换图片就可以了,最后使用时直接使用正常名字就行了,如:“icon.png”。

      Localizable27

5、其他文件国际化

  • 国际化其他文件和国际化图片第二种方法类似,先在 Localization 中添加语言,然后把对应版本拷贝到 en.lproj 和 zh-Hans.lproj 文件夹中,最后引用就行了。
优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/312075

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。