原地址:http://www.cnblogs.com/U-tansuo/p/IOS_NSLocalizedString.html

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. 使用genstring和NSLocalizedString实现App文本的本地化

    OS提供了简便的方法来实现本地化,其中用的最多的就是NSLocalizedString. 首先查看下NSLocalizedString是什么: #define NSLocalizedString(ke ...

  2. iOS开发那些事-iOS应用本地化-文本信息本地化

    文本信息本地化在本地化工作中占有很大的比例.包括了:应用名称本地化.系统按钮和信息本地化,以及静态文本信息本地化. 系统按钮和信息本地化 还记得天气预报应用背后的“完成”按钮吗,它在中文环境下是“完成 ...

  3. app应用程序本地化--备用

    一.简介 * 使用本地化功能,可以轻松地将应用程序翻译成多种语言,甚至可以翻译成同一语言的多种方言 * 如果要添加本地化功能,需要为每种支持的语言创建一个子目录,称为”本地化文件夹”,通常使用.lpr ...

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

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

  5. [App Store Connect帮助]三、管理 App 和版本(2.5)输入 App 信息:本地化 App Store 信息

    在添加 App 至您的帐户之后,您可以在“App 信息”页面添加语言并输入本地化元数据.若要查看受支持的语言列表,请参见 App Store 本地化.若要了解您可以本地化的属性,请参见必填项.可本地化 ...

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

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

  7. “简密”App Store处女作开发总结

    前言 今天是我的iOS App Store上架应用处女作"简密"第一天上线的日子,简密是我从事iOS开发三年以来的第一款个人上架应用,之前做过两年的企业级应用开发以及公司的电商应用 ...

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

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

  9. 鹅厂干货 | 腾讯游戏APP协议迭代的那些事

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~. 作者:罗广镇 | 腾讯移动开发工程师 App与后台通信通常有采用json等文本协议或者采用二进制协议,本文则主要总结了心悦俱乐部App的接 ...

随机推荐

  1. Android--手持PDA读取SD卡中文件

    近两年市场上很多Wince设备都开始转向Android操作系统,最近被迫使用Android开发PDA手持设备.主要功能是扫描登录,拣货,包装,发货几个功能.其中涉及到商品档的时候大概有700左右商品要 ...

  2. Aspose.Cells 读取受保护的Excel

    最近遇到一个需求,要能够读取受密码保护的Excel内容,之前都是直接读取Excel中的数据,不需要做任何其他的处理.   当Excel双击的时候,需要输入密码,在使用Aspose.Cells 组件读取 ...

  3. 论Visual Studio和.NET Framework

    今天在工作的时候听到一席谈话感觉有点不可思议,微软真的是把开发人员惯的有点傻了,微软流水线式的产品让很多开发者认定了"唯一",这当然也说明了微软的成功,不扯太多题外话,今天只是简单 ...

  4. (旧)子数涵数·Flash——Flash Player的操作命令

    一.什么是Flash Player? Flash Player就是官方指定的一种FLash播发器. 用百度的话来讲,Adobe Flash Player 是一款高级客户端运行时使用的播放器.它短小精悍 ...

  5. Scala 中的函数式编程基础(二)

    主要来自 Scala 语言发明人 Martin Odersky 教授的 Coursera 课程 <Functional Programming Principles in Scala>. ...

  6. shell中的正则表达式

    1.正则与通配符 linux中的通配符是用来匹配文件名的,其匹配是完全匹配.只支持通配符则命令有ls find cp等命令 正则是用来匹配字符串的,是包含匹配.只要搜索的内容在某个字符串中,那么改字符 ...

  7. centos 6.5下安装mysql+nginx+redmine 3.1.0 笔记

    centos 6.5下安装mysql+nginx+redmine 3.1.0 笔记 目录[-] 过程 1.安装RVM 2.利用rvm安装 Ruby 1.9.3 并设为默认 3.安装rails 4.安装 ...

  8. JQuery学习(2)之Ajax

    同步传输 正 多件事情一起做 | 程 不 事情一件一件地做 常: | 序 是: 异步传输 人 事情一件一件地做 | 员 人 多件事情可以一起做 附加(XML) ★XML作用:用来存储数据. ★XML特 ...

  9. Eclipse属性文件编辑器---Properties Editor

    今天在用 Eclipse 来编辑 .properties 文件时,写的中文会自动转为 Unicode 编码,完全不知道自己的中文写的是什么!! 于是查了一下,网上推荐,在Eclipse 中 安装一个 ...

  10. Oracle定时执行存储过程

    首先查看 SQL> show parameter job NAME                                 TYPE        VALUE-------------- ...