您的位置:首页 > 移动开发 > IOS开发

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

2015-06-25 20:52 531 查看
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。那就麻烦了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: