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

iOS国际化和genstrings所有子目录本地化字符串
  最近在忙着一个国外项目,天天加班,没时间更新博客。就简单讲讲国际化的知识。  
  首先,我们使用字符串,必须用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不能是宏定义或者一些动态字符串,否则用上面的命令会报错。
 
      今天重新回来做国际化,发现上面的命令是只能遍历.m文件的,但实际发现经常有字符串放在了.h文件,所以应该用如下命令去遍历整个.h和.m文件,特意来加上:
   find . \( -name '*.m' -o -name '*.h' \) -print0 | xargs -0 genstrings -o en.lproj
 
  最后补一句,规范化还是很必须的。假如你以前的代码都没用到NSLocalizedString,那就麻烦了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值