原地址: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. canvas粒子demo

    之前在codepen上看到了类似的效果,于是自己也使用coffee-script写了个相似的demo 效果:http://whxaxes.github.io/canvas-test/src/Parti ...

  2. CSS培训机构

    CSS培训机构[跑赢职场,跑赢未来] CSS培训机构[跑赢职场,跑赢未来]CSS设计热度白热化的今天,如何选对专业的CSS设计培训学校/机构,成为众多人关注的话题.跑赢职场就是css培训机构中的佼佼者 ...

  3. Codeforces Beta Round #6 (Div. 2 Only) D. Lizards and Basements 2 dp

    题目链接: http://codeforces.com/problemset/problem/6/D D. Lizards and Basements 2 time limit per test2 s ...

  4. java多线程-Condition

    Condition 将 Object 监视器方法(wait.notify 和 notifyAll)分解成截然不同的对象,以便通过将这些对象与任意 Lock 实现组合使用,为每个对象提供多个等待 set ...

  5. python 参数的组合

    现在我们知道python定义函数的参数类型有:必选参数 默认参数 可变参数 关键字参数 但是在我们日常中我们是可以组合使用这些参数的:但是使用的时候,参数定义是有顺序的 定义的顺序必须是:必选参数,默 ...

  6. 【HDU 5578】Friendship of Frog

    题 题意 求相同字母最近距离 分析 用数组保存各个字母最后出现的位置,维护最小距离. 代码 #include <cstdio> int c[30],n,p,a,minl; char ch; ...

  7. POJ1330 Nearest Common Ancestors

      Nearest Common Ancestors Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 24587   Acce ...

  8. java的static块执行时机

    一.误区:简单认为JAVA静态代码块在类被加载时就会自动执行.证错如下: class MyClass1 { static {//静态块 System.out.println("static  ...

  9. NetBeans快捷键的使用

    .Ctrl-Tab:在打开的文件之间切换: .Ctrl-N:在当前打开的项目里新建文件: .Ctrl-F:当前文件查找匹配的字符(支持正则): .Ctrl-H:当前文件查找.替换匹配的字符(支持正则, ...

  10. tp 多语言支持

    tp支持多语言 通过get来改变语言的 http://localhost/tp/index.php/Admin/User/add/hl/zh-cn http://localhost/tp/index. ...