码迷,mamicode.com
首页 > 移动开发 > 详细

iOS国际化和genstrings所有子文件夹本地化字符串

时间:2015-06-25 22:49:33      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:

iOS国际化和genstrings所有子文件夹本地化字符串
  在最近的一个繁忙的对外工程。每天加班。没有时间更新博客。简单谈一下知识的国际化。

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

我们应用仅仅支持中文,英文,所以仅仅建了zh-Hans.lproj和en.lproj,然后在Localizable.strings指定了不同的值。举比例如以下:
 这样程序就能依据系统语言,去选择“登录”还是“Log In”。
 
  可是假设每次加了一个本地化字符串,就得手动去Localizable.strings加入相应的key,那就太麻烦了,幸好苹果提供了快捷生成本地化key的命令。以下以en.lproj的生成为例:
  首先,我们进入程序project所在的文件夹,用命令建立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。那就麻烦了。



iOS国际化和genstrings所有子文件夹本地化字符串

标签:

原文地址:http://www.cnblogs.com/hrhguanli/p/4600921.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!