• 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的生成为例:
      首先,我们进入程序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。那就麻烦了。



  • 相关阅读:
    汇总:unity中弹道计算和击中移动目标计算方法
    Unity3D游戏开发之SQLite让数据库开发更简单
    3DMAX可编辑多边形常用命令-桥
    3dmax沿立方体边扩展出面
    3dmax切割平行线
    Litjson
    使用 Unity 3D 开发游戏的架构设计难点
    Unity T4M 中文讲解
    unity5.5打包
    颜色模式
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4600921.html
Copyright © 2020-2023  润新知