iOS - Localizable 国际化

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 文件夹中,最后引用就行了。
时间: 2024-08-01 14:06:08

iOS - Localizable 国际化的相关文章

iOS 对国际化语言的支持.

没机会尝试,自己做练习吧,记录一下详细步骤吧,以备要用之需. 在这里我参考了这边文章,引荐一下 表示感谢! http://lizaochengwen.iteye.com/blog/1452076 我喜欢图文并茂,看起来比较有感觉!^^ 首先第一步是创建文件,创建步骤如图: 取名的话,必须使用: Localizable.strings 创建成功以后,接下来就是选择支持的语言了. 这里要注意的是"Chinese"要选择"zh_Hans",这个是简体中文."zh

iOS 语言国际化

问题描述 我这个里面怎么没有简体中文的选项呢  只有英文  base? 解决方案 有的,看下demo

IOS国际化

IOS国际化: 1.首先新建InfoPlist.strings文件和Localizable.strings文件,注意区分大小写, 2.然后在PROJECT中,选择Info,然后点击 Localizations, 出现一个界面,选择Localizable.strings文件,别选InfoPlist.strings文件, 确定后,就会生成两个文件,一个是base,也就是英语的, 另一个就是我们选择的,如果是Chinese(Simplified),就是简体中文, 然后在这两个文件中添加,即所谓的国际化

iOS 应用程序内部国际化,不跟随系统语言

iOS 应用程序内部国际化,不跟随系统语言 分类: IOS开发工作笔记2013-12-07 18:21 1161人阅读 评论(0) 收藏 举报 前言:网络上关于iOS国际化的文章很多,但基本上都是基于跟随系统语言的国际化,笔者就不赘述了-0 – 今天要讲的是不跟随系统的切换语言版本方案,即程序内部的切换语言版本方案. 一.总则:        应用内部语言不跟随系统语言,由应用自己进行控制,通过配置多个语言文件,根据用户的选择动态获取不同文件夹下的语言文件,显示在界面上.        最后把用

IOS 解决推送本地国际化 loc-key 本地化失败的问题_IOS

正文 一.准备 推送本地国际化官方文档: {"aps":{"alert":{"title":"Shou","loc-key":"notification_push_live","loc-args": ["over140","broadcast test"]},"badge":0,"sound&quo

【Swift 3.0】iOS 国际化切换语言

有的 App 可能有切换语言的选项,结合系统自动切换最简单的办法: fileprivate var localizedBundle: Bundle = { return Bundle(path: Bundle.main.path(forResource: "zh-Hans", ofType: "lproj")!)! }() public func LocalizedString(_ key: String, comment: String) -> String

iOS 疑难杂症 — — 推送本地国际化 loc-key 本地化失败的问题

一.准备 推送本地国际化官方文档: https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/TheNotificationPayload.html#//apple_ref/doc/uid/TP40008194-CH107-SW7 NWPusher 测试推送内容: {"aps":{"alert":

iOS国际化为什么不切换语言

问题描述 添加.string后 NSLocalizedString(@"key", @"");语言不切换成中文 解决方案 你拷贝国家化文件到工程中,然后将右侧勾选上,如果这样的操作还是不行,那你就直接手动改成中文的解决方案二:帮你邀请了大牛 @dujiepeng解决方案三:添加国际化文件之后还是不能修改成中文么解决方案四:看下这个http://www.cnblogs.com/zhidao- ... .html,你的InfoPlist.strings和localiza

iOS UITextView与Localizable.strings中的换行

1.在Localizable.strings 中使用 option + return 组合键会插入一个 n, 再把这个字符串加载到UITextView时能够显示换行. 2.在Localizable.strings 中使用 control + return 组合键会插入一个 U2028, 再把这个字符串加载到UITextView时不显示换行. 3.xib 文件中的TextView输入文字时,换行使用option + return.