文档章节

iOS国际化和genstrings所有子目录本地化字符串

andyhe91
 andyhe91
发布于 2014/04/03 10:12
字数 423
阅读 2275
收藏 1

 


2013-06-21 23:41 247人阅读 评论(0) 收藏 举报

最近在忙着一个国外项目,天天加班,没时间更新博客。就简单讲讲国际化的知识。

首先,我们使用字符串,必须用NSLocalizedString(key,comment),这样我们在不同的Localizable.strings对key指定不同的值,系统会根据当前系统语言,去不同的lproj找不同的字符串。用个图显示吧:

我们应用只支持中文,英文,所以只建了zh-Hans.lproj和en.lproj,然后在Localizable.strings指定了不同的值。举例如下:

 这样程序就能根据系统语言,去选择“登录”还是“Log In”。

 

但是如果每次加了一个本地化字符串,就得手动去Localizable.strings添加对应的key,那就太麻烦了,幸好苹果提供了快捷生成本地化key的命令。下面以en.lproj的生成为例:

首先,我们进入程序工程所在的目录,用命令建立en.lproj 

  mkdir en.lproj

然后我们遍历所有的子目录文件,去生成Localizable.strings,命令如下:

  find ./ -name *.m -print0 | xargs -0 genstrings -o en.lproj

基本都说genstrings -o en.lproj *.m就可以生成Localizable.strings,但是这个命令只能生成当前目录的,并没有遍历子目录,所以基本没用

这样系统就会把子目录用到NSLocalizedString函数的key值都写到文件里。

需要注意的是,NSLocalizedString(key,comment),用这个函数时,key不能是宏定义或者一些动态字符串,否则用上面的命令会报错。



© 著作权归作者所有

andyhe91
粉丝 58
博文 129
码字总数 209109
作品 0
长沙
私信 提问
iOS应用国际化教程(2014版)

本文最初由Sean Berry撰写,由Ali Hafizji针对iOS 7进行了更新。 开发一款伟大的iOS应用程序是件了不起的事情,但是还有比优秀的代码、华丽的设计以及直观化交互更多的事要做。跻身在App Sto...

mingxun
2014/06/04
0
2
iPhone开发中的多语言化

之前写过一篇关于Qt多语言化的文章:http://blog.csdn.net/jasonblog/article/details/5445191。 虽然在进行iOS开发的过程中,可以在Xcode里直接使用中文字符串,但总觉得有点奇怪和不舒服。...

迷途d书童
2012/03/05
1K
1
谈谈iOS 5和Storyboard的应用本地化

在使用Nib和Xib文件,也就是Interface Builder的iOS 4.x SDK中我们通过NSLocalizedString和Nib文件来本地化字符串。其中还涉及字符串文件的编写,十分麻烦。 在iOS 5和Xcode 4.2我们也可以这...

孔俊
2013/06/19
0
4
两分钟带你快速掌握Flutter的项目结构、资源、依赖和本地化

为大家倾力打造的课程《Flutter从入门到进阶-实战携程网App》上线了,解锁Flutter开发新姿势,一网打尽Flutter核心技术 点我Get!!! 在这篇文章中,将带着大家一起认识,,,以及 首先我们...

CrazyCodeBoy
04/03
0
0
NSLocalizedString 实现国际化

一、获取系统所支持的国际化信息 在国际化之前,你可以在iphone中的”设置->通用->多语言环境->语言”中来查看你的iphone支持哪些语言,当然也可以写一段代码测试一下你的iphone都支持哪些语言...

长平狐
2013/03/19
99
0

没有更多内容

加载失败,请刷新页面

加载更多

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。

import java.util.Arrays; public class Solution { public int MoreThanHalfNum_Solution(int [] array) { Arrays.sort(array); int count=0; for(int i=0;i<array.le......

南桥北木
10分钟前
0
0
关于FLAG_ACTIVITY_NEW_TASK的使用

参考文章: https://blog.csdn.net/u010389391/article/details/78558475 Context调用startActivity, 有部分情况会报出如下错误: Caused by: android.util.AndroidRuntimeException: Calli......

Gemini-Lin
25分钟前
0
0
Python开发工具:Webware for Python

原文来之:https://www.oschina.net/p/webware+for+python 前言 Webware for Python 是一组 Python 包和工具用来开发面向对象的 Web 应用。良好的设计模式,包含一个快速的应用服务器、Servl...

A_裙232550246
34分钟前
0
0
高并发场景下的缓存有哪些常见的问题?

一、缓存一致性问题 当数据时效性要求很高时,需要保证缓存中的数据与数据库中的保持一致,而且需要保证缓存节点和副本中的数据也保持一致,不能出现差异现象。 这就比较依赖缓存的过期和更新...

别打我会飞
49分钟前
3
0
List list = new ArrayList()为何父类引用指向子类对象(多态)

态:要有继承,方法的重写,父类引用指向子类对象 疑问一:父类引用指向子类对象 与指向父类对象 Animal cat = new Cat(); //向上转型。 父类引用指向子类对象,该引用不能再访问子类新增加的...

architect刘源源
49分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部