1、国际化

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

2、应用内容国际化

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

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

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

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

2.1 代码国际化

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

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

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

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

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

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

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

    • 如果你的 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)。

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

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

  • 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)。

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

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

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

3、应用名国际化

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

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

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

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

        CFBundleDisplayName = "App Name";

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

        CFBundleDisplayName = "App 名称";

  • 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...。

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

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

5、其他文件国际化

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

iOS - Localizable 国际化相关推荐

  1. IOS APP 国际化 程序内切换语言实现 不重新启动系统(支持项目中stroyboard 、xib 混用。完美解决方案)

    IOS APP 国际化 程序内切换语言实现 不重新启动系统(支持项目中stroyboard .xib 混用.完美解决方案) 参考文章: (1)IOS APP 国际化 程序内切换语言实现 不重新启动系统 ...

  2. ios plist 国际化_Java与iOS对话:Java对象与Apple plist序列化

    ios plist 国际化 我很高兴地宣布我的第一个开源项目java-plist-serializer可以帮助您将Java(尤其是基于Spring的应用程序)与iOS应用程序集成在一起.   背景 我 ...

  3. IOS APP 国际化(实现不跟随系统语言,不用重启应用,代码切换stroyboard ,xib ,图片,其他资源)...

    此问题已解决.请看: IOS APP 国际化 程序内切换语言实现 不重新启动系统(完美解决方案) 接了个变态的需求,要在程序内切换程序语言实现国际化. 可以先看看这个,比较详细. http://blo ...

  4. iOS应用国际化教程(2014版)

    本文转载至 http://www.cocoachina.com/industry/20140526/8554.html 这篇教程将通过一款名为iLikeIt的应用带你了解最基础的国际化概念,并为你的应 ...

  5. 使用xcode4做ios的国际化

    xcode4和xcode3上面关于制作国际化文件的操作步骤不太一样.网上关于xcode3中国际化的文件很多,xcode4的不多.根据自己制作的过程来记录下来 1)在项目的"supportin ...

  6. iOS开发 国际化/多语言适配

    史上最详细的多语言本地化 iOS中,国际化适配,大概有下面几种情况需要适配. 1,App名称/图标本地化 2,启动页本地化 3,代码中字符串本地化 4,xib/storyboard本地化 5,图片的本 ...

  7. swift5 ios的国际化(本地化,全球化,多语言)(最主要博客)

    文章目录 1.我主要参考的是这位大神的博客 1.1 要注意的地方1 1.2 要注意的地方2 2.storyboard的国际化 3. 在APP内切换语言 3.1 代码 LocalizableManage ...

  8. iOS 之国际化语言切换

    一.总则: 应用内部语言不跟随系统语言,由应用自己进行控制,通过配置多个语言文件,根据用户的选择动态获取不同文件夹下的语言文件,显示在界面上. 最后把用户选择的语言持久化到本地,下次运行时读取. 二. ...

  9. iOS开发技巧-国际化(Localization),只看一篇就够了

    转:https://www.jianshu.com/p/f8edd7b7a217 本文主要涉及iOS的国际化,网上虽然有很多相关的文章,但是仔细阅读下来感觉都不太全面,因此重开一篇总结,记录项目中遇到 ...

最新文章

  1. java 图片传输方式_Java图像传输方法
  2. python常用模块大全总结-python常用模块整理
  3. BZOJ 1924 [Sdoi2010]所驼门王的宝藏
  4. 解决:EXCEL复制粘贴,精度丢失
  5. Lecture 6 Order Statistics
  6. MySql Delimiter
  7. VO,BO,PO,DO,DTO的区别
  8. Android对性能要求,Android性能管理
  9. 数控铣削图案及编程_数控铣加工比普铣的优势,大多数人选择数控铣的原因
  10. python 堆栈溢出_内存 - 如何发生“堆栈溢出”,如何防止它?
  11. 《南溪的目标检测学习笔记》——训练PyTorch模型遇到显存不足的情况怎么办(“OOM: CUDA out of memory“)
  12. 【新Attention】最强的Attention函数诞生啦,带给你意想不到的巨大提升!
  13. 晶体管电路设计---MOS管与三极管特性
  14. 从职高到杭电、浙大、MIT计算机博士!
  15. 用免费新浪云sea搭建个人云服务器
  16. win10黑屏假死怎么解决
  17. Mac下brew的安装
  18. 极云普惠云电脑服务器维护,详细的极云普惠云电脑使用教程
  19. 软件测试工程师面试一般常见问题汇总
  20. C# 打开钱箱支持北洋、佳博、爱普生

热门文章

  1. 华为交换机配置基本命令
  2. 隐藏在程序旮旯中的“安全问题”
  3. 修复阻止程序安装或删除的问题
  4. swt能单独在linux运行么,java – 在Mac上运行基于SWT的跨平台jar
  5. php类属性命名驼峰还是下划线,PHP实现驼峰命名和下划线命名互转
  6. python实现加密字符串_Python实现对字符串的加密解密方法示例
  7. 在 Linux 终端调整图像的大小
  8. PHP 中 include 和 require 的概要及区别介绍
  9. 计算机上机报告-origin,Origin 8上机练习1
  10. Codeforces Round #694 (Div. 1 + Div2)(A ~ H,8题全,超高质量题解)【每日亿题】2021/2/1、2/2