美文网首页
genstrings的使用总结

genstrings的使用总结

作者: Jay神 | 来源:发表于2016-05-13 09:20 被阅读694次

genstrings的使用

App本地化的需要不用讲大家也都明白,本文将介绍一种简单的方法来实现字符串的本地化。在不考虑本地化的情况下,我们如果在代码中给一个Button定义title,一般会这样写:

   btn.titleLable.text = @"Example Button";

也许我们已经写了很长的代码才考虑到本地化的问题,大可不必头疼,这时候,我们要做的是把代码从头扫一遍,然后把每个会显示给用户看的字符串做如下修改:(对于内部使用的字符串就用不着本地化了)

   btn.titleLable.text = NSLocalizedString(@"btn_title", nil);

NSLocalizedString是一个定义在NSBundle.h中的宏,其用途是寻找当前系统语言对应的Localizable.strings文件中的某个key的值。第一个参数是key的名字,第二个参数是对这个“键值对”的注释,在用genstrings工具生成Localizable.strings文件时会自动加上去。

到目前为止,我们还没有生成Localizable.strings文件。这是一个逆向的过程,也就是先写好调用过程,再生成strings资源文件。

当我们把所有的.m文件都修发好了,就该genstrings工具出场了。

  1. 启动终端,进入工程所在目录。
  1. 新建两个目录,推荐放在资源目录下。目录名会作用到Localizable.strings文件对应的语言,不能写错了。这里zh-Hans指简体中文,注意不能用zh.lproj表示。
    mkdir zh-Hans.lproj
    mkdir en.lproj
  2. 生成Localizable.strings文件
    genstrings -o zh-Hans.lproj *.m
    genstrings -o en.lproj .m
    .-o <文件夹>,指定生成的Localizable.strings文件放置的目录。
      
    .
    .m,扫描所有的.m文件。这里支持的文件还包括.h, .java等。
  3. 右键点击工程的Resources目录,选择“New Group”,添加两个目录zh-Hans.lproj和en.lproj。
  4. 在新建的group中添加刚刚生成的Localizable.strings文件。
  5. 加上-a参数 可以每次生成时在文件末端加入新增的内容
  6. 最后在Localizable.strings文件中,修改每个key所对应的内容,就大功告成了。

说了一大堆,其实操作起来还是很简单的,总的来讲就是两条:

1.在代码里用NSLocalizedString获取要本地化的字符串
2.用genstrings扫描代码文件,生成Localizable.strings,然后加到工程中。

2016-05-01补充:使用genstrings -s ‘xxxxLocalizable’ 指定自定义LocalizedString的方法,在我实现中无法生成,提示未找到此函数。求高手指教。
例如:

#define WMGetStringWithKeyFromTable(key,tbl,com) \
[[WMLanguageTool sharedInstance] getStringForKey:key withTable:tbl comment:com]

2016-09-12补充:Fix 2016-05-01无法生成Strings,提示未找到此函数的问题,修改如下:

#define WMStringFromTable(key,tbl,com) \
[[WMLanguageTool sharedInstance] getStringForKey:key withTable:tbl comment:com]

命名要符合规范 xxStringFromTable

相关文章

  • genstrings的使用总结

    genstrings的使用 App本地化的需要不用讲大家也都明白,本文将介绍一种简单的方法来实现字符串的本地化。在...

  • [9] String Resources(本地化文件资源)

    创建 Strings 文件 使用命令行工具genstrings genstrings -o en.lproj *....

  • iOS 国际化

    一、如何建立 Localized.strings 文件 可以参考这篇文章,比较详细 二、使用 genstrings...

  • 国际化相关

    进入iOS项目所在目录,也就是源代码所在目录,使用命令 genstrings .m 提取所有.m文件中通过NS...

  • iOS国际化方案---看我就够

    标签:「国际化」「Objective-C」「genstrings」作者: 夜魔南瓜君君审校: IGShare团队 ...

  • iOS WKWebView使用总结

    iOS WKWebView使用总结 iOS WKWebView使用总结

  • iOS导航栏使用总结

    iOS导航栏使用总结 iOS导航栏使用总结

  • 第十三周第一天笔记之less

    less知识 简书链接less使用总结:less基础知识less使用总结2:less使用总结 单位px,em,re...

  • SourceTree-使用总结

    SourceTree-使用总结 配置总结 使用 sourceTree 的时候每次 pull 和 push 代码都得...

  • this的使用总结

    this 是在函数执行的过程中自动创建的一个指向一个对象的内部指针。确切的说,this并不是一个对象,而是指向一个...

网友评论

      本文标题:genstrings的使用总结

      本文链接:https://www.haomeiwen.com/subject/andckttx.html