iOS提供了简便的方法来实现本地化,其中用的最多的就是NSLocalizedString。
首先查看下NSLocalizedString是什么:
#define NSLocalizedString(key,comment)
[[NSBundle mainBundle]localizedStringForKey:(key) value:@"" table:nil];
这 是一个宏,本质上调用了函数localizedStringForKey:这样,这个宏做的其实就是在当前bundle中查找资源文件名 Localizable.strings中键值key所指向的字符串,这样就不难理解还有诸如:NSLocalizedStringFromTable的 宏了。

在不考虑本地化的情况下,外面如果在代码中给一个Button定义title,一般会这样写:

btn.titleLabel.text = @"Example Button";
当虚考虑本地化的问题时,把要显示给用户看的字符串做如下修改:(对于内部使用的字符串就用不着本地化了)
btn.titileLabel.text = NSLocalizedString(@"btn_title",nil);
NSLocalizedString是一个定义在NSBundle.h中的宏,气用途是寻找当前系统语言对应的Localizable.strings文件中的某个key的值。
第一个参数是key的名字,第二个参数是对这个“键值对”的注释,在用genstrings工具生成Loclizable.strings文件时会自动加上去。
到目前为止,外面还没有生成Localizable.strings文件,这个一个逆向的过程,也就是先写好调用过程,再生成strings资源文件。
当外面把所有的.m文件都修改好以后,就该genstring工具了。
1.启动终端,进入工程所在的目录
2.新建两个目录,推荐放在资源目录下
目录名会作用到Localizable.strings文件对应的语言,不能写错了。这里zh-Hans指简体中文,注意不能用zh.lproj表示。
mkdir zh-Hans.lproj
mkdir en.lproj
3.生成Localizable.strings文件
genstrings -o zh-Hans.lproj *.m
genstrings -o en.lproj *.m
-o<文件夹>,指定生成的Localizable.strings文件放置的目录
*.m,扫描所有的.m文件,这里支持的文件还包括.h,.java等
4.右键点击工程的Resources目录,选择“New group”,添加两个目录zh-Hans.lproj和en.lproj
5.在新建的group中添加刚刚生成的Loclizable.strings文件
6.最后在Localizable.strings文件中,修改每个key所对应的内容,就可以了。
总结:
1.在代码里用NSLocalizedString获取要本地化的字符串
2.用genstrings扫描代码文件,生成Localizable.strings,然后加到工程中。

【转】使用genstring和NSLocalizedString实现App文本的本地化相关推荐

  1. Android中实现APP文本内容的分享发送与接收方法简述

    谨记(指定选择器Intent.createChooser()) 开始今天的内容前,先闲聊一下: (1)突然有一天头脑风暴,对很多问题有了新的看法和见解,迫不及待的想要分享给大家,文档已经写好了,我需要 ...

  2. MUI开发APP文本框获得焦点并弹出软键盘

    在使用MUI开发APP时,经常需要让文本框获得焦点,并弹出软键盘,方便用户操作.在使用混合模式开发时,这需要调用Native.js方法. MUI官网展示了调用软键盘的示例:MUI官网示例. 调用软键盘 ...

  3. 敬业签苹果ios手机便签APP文本中英文翻译功能如何使用?

    一.打开苹果手机便签敬业签App并登录账号,可点击底部中间的+按钮新增便签文字内容保存并点击查看,或者从已有内容中点击选择要翻译的便签内容,进入查看内容详情页面: 二.在查看便签内容详情页面右上角找到 ...

  4. 【Unity3D游戏开发】App游戏名字本地化 (二七)

    开发环境 Unity5.3 XCode7.2 目标 游戏名字需要多语言处理 过程 1.添加多语言 2.用CFBundleDisplayName来处理名字多语言 失败尝试流程 1.未成功 info.pl ...

  5. iOS 本地化应用程序汇总 国际化

    最近要做一个应用要实现本地化,因为使用的是xcode4,应用程序本地化的问题跟以前的版本还是有些不同,在网上找了些资料对于xcode4以上的版本资料还是相对较少,有些最后要通过手动创建文件,这样操作实 ...

  6. iOS开发——高级技术本地化与国际化详解

    本地化与国际化详解 效果如下: 英语:                                                                    中文: 具体实现如下: 一 ...

  7. APP与后台通信数据格式的演进:从文本协议到二进制协议

    转载 http://www.52im.net/thread-1536-1-1.html 1.前言 相信活跃在即时通讯网社区的开发者们都很清楚,即时通讯应用(包括IM聊天应用.实时消息推送应用等)的流量 ...

  8. app的本地化 国际化

    IOS篇 1. app name 多语言设置 注意:xcode 8 以后没有support Files 文件夹了,不用care, 只要配置文件名称填对就行   InfoPlist.strings , ...

  9. Vue表单输入绑定(文本框和复选框)

    文本框 <!DOCTYPE html> <html>     <head>         <meta charset="utf-8"&g ...

最新文章

  1. [BZOJ4556][Tjoi2016Heoi2016]字符串 主席树+二分+倍增+后缀自动机
  2. 跨平台开发框架 Lynx 初探
  3. linux命令行的操作符,Linux shell 比较运算符使用方法教程
  4. 登陆模板_曝北京国安克星将登陆中超,3年进84球,可成中超新政引援模板
  5. c语言基础知识孙小红,基于J2EE的C语言在线学习系统的设计与实现
  6. 一个MYSQL PDO相对完整且功能强大的封装类
  7. 云计算计算机二级,2021计算机二级office用的是哪个版本
  8. 怎么连接vm的远程服务器,vm虚拟机连接远程服务器(vm虚拟机搭建服务器)
  9. android手机之-------64位操作系统 与 64位处理器
  10. 千机智能孙海锋:期待与国际同行在高端制造领域同台竞技(自主可控CAM软件:UltraCAM)
  11. e4a 安卓获取ROOT权限的方法思路 转载
  12. HTML页面防止表单重复提交
  13. 将 Visio 的图片复制到 ppt并能编辑
  14. word分散对齐调整宽度_Word文字对齐如何调整,word对齐方法大全
  15. Windows运维之道——PXE备份系统
  16. 泡妞技术帖:一物降一物 金庸爷爷教你如何谈恋爱
  17. 爬虫-----爬虫的爬,爬虫的虫
  18. 20155305乔磊2016-2017-2《Java程序设计》第九周学习总结
  19. 2023年第三届纳米材料与纳米技术国际会议(NanoMT 2023)
  20. 软件安全设计(威胁建模实现)

热门文章

  1. 硬盘、移动硬盘、内存卡(SD卡、TF卡)、U盘修复,格式化
  2. Ubuntu在命令行下不能够切换字母的大小写,只能输入大写字母
  3. react-redux中的connect
  4. JSR315(JavaTM Servlet 3.0 Specification)
  5. windows下netstat的使用
  6. 看了毁你三观的PCB设计理论 高速PCB外层还要不要覆铜了
  7. MHA高可用主从复制实现
  8. Linux软件安装管理 - CentOS (二) ---- yum在线安装
  9. springMVC,mybatis配置事务
  10. 写你的shell,其实很简单[架构篇]